c++問題 請高手解題

2007-06-06 5:19 am
把質數依序填入10x10的陣列A中
由左到右填入 由2開始
若學號為 a b c d e f g
則求出 A[a][b],A[c][d],A[e][f],A[g][h]

就是在10x10的方格子中填入質數(填滿為止)由2開始填
如果A[1][2] 就會輸出方格子中的橫縱列的數字出來。
a b c d e f g →可以自行設自。

PS 如果還有任何不懂的話,可以說出來,我會再補充。
更新1:

請問如果答案上面在多加一個10x10的質數表呢?這樣可以嗎? 一樣由2開始,一直到填滿為止。

更新2:

那可以請大大幫我上面加一個質數表嗎? 還有綿羊大大 您的g跟h的輸出好像怪怪的 可以麻煩你在看一下嗎@@? 謝謝你喔!!^ ^a

更新3:

綿羊大大,下面那個質數表要放在哪裡 = =? 謝謝你喔。。

更新4:

阿。。忘了一點,綿羊大大,你的g好像怪怪的 我出入的是7,可是他輸出的結果卻不是7 請問這是發生什麼問題嗎?? 麻煩一下喔。。謝謝

更新5:

可不可以把質數表加上去 再做一次程式碼呢? 我笨笨的。。 真的看不懂>"< 不好意思

更新6:

不能分開PO嗎? 如果不能那就算了沒關係 也麻煩你很多了 真的辛苦你了 謝謝你喔

回答 (3)

2007-06-06 6:22 am
✔ 最佳答案
//Power by Visual Studio 2005
#include<iostream>
#include<cstdlib>
#include<cmath>
using namespace std;
bool isPrime(double number)
{
bool retBoolean=true;
for(int i=2;i<=(int)sqrt(number);i++)
if(((int)number%i)==0)
{
retBoolean=false;
break;
}
return retBoolean;
}
int main(int argc, char** argv)
{
//==========START==========//
int A[10][10],number=2,id,temp,a,b,c,d,e,f,g,h;
for(int i=0;i<10;i++)
{
for(int j=0;j<10;j++)
{
while(!isPrime(number))
number++;
A[i][j]=number++;
}
}
cout<<"Input 8 bits ID: ",cin>>id,temp=id;
a=temp/(int)pow(10.0, 7.0),temp%=(int)pow(10.0, 7.0);
b=temp/(int)pow(10.0, 6.0),temp%=(int)pow(10.0, 6.0);
c=temp/(int)pow(10.0, 5.0),temp%=(int)pow(10.0, 5.0);
d=temp/(int)pow(10.0, 4.0),temp%=(int)pow(10.0, 4.0);
e=temp/(int)pow(10.0, 3.0),temp%=(int)pow(10.0, 3.0);
f=temp/(int)pow(10.0, 2.0),temp%=(int)pow(10.0, 2.0);
g=temp/(int)pow(10.0, 1.0),temp%=(int)pow(10.0, 1.0);
h=temp;
cout<<"A["<<a<<"]["<<b<<"]= "<<A[a][b]<<endl;
cout<<"A["<<c<<"]["<<d<<"]= "<<A[c][d]<<endl;
cout<<"A["<<e<<"]["<<f<<"]= "<<A[e][f]<<endl;
cout<<"A["<<g<<"]["<<h<<"]= "<<A[g][h]<<endl;
//==========END==========//
system("PAUSE");
return EXIT_SUCCESS;
}

2007-06-06 17:50:36 補充:
當然可以放質數表

2007-06-07 16:42:06 補充:
=質數表=

for(int i=0;i<10;i++)
{
for(int j=0;j<10;j++)
{
cout<<" "<<setw(3)<<A[i][j];
}
cout<<endl;
}

2007-06-08 10:35:56 補充:
輸入一個 8 位數的數值,每個數之間不可有空格。

2007-06-09 16:39:19 補充:
奇摩的補充內容有限制字數,根本無法放那麼多程式碼,所以你當初一開始提問題時,就應該寫清楚問題。
2015-04-24 9:59 am
●九州 娛樂 網站 http://ts777.cc
●●●運彩遊戲、真人遊戲、電子遊戲、對戰遊戲、對戰遊戲●●●

●新舊會員儲值就送500點

● 真人百家樂彩金等你拿

●線上影片直播、正妹圖、討論區免費註冊

歡迎免費體驗交流試玩!

●九州 娛樂 網站 http://ts777.cc
2007-06-06 5:54 am
首先質數就是
bool isPrime(int val)
{
 if(val<2)return false;
 for(int i=2; i<val; ++i)
  if(val%i==0)return false;
 return true;
}

生出質數並且填入陣列
int** getPrime(int** a,int row,int col)
{
 int prime = 0;
 for(int iRow=0; iRow<row; ++iRow)
  for(int iCol=0; iCol<col;)
   while(isPrime(++prime))
    a[iRow][iCol++]=prime;
 return a;
}

產生二維陣列
int** Alloc(int row,int col)
{
 int** a=(int**)malloc(row*sizeof(int*));
 for(int i=0; i<row; ++i)
  a[i]=(int*)malloc(col*sizeof(int));
 return a;
}

那麼
在取得質數陣列部分就是
int **a = Alloc(10,10);
a = getPrime(a,10,10);

這樣懂嗎
質數是頗不錯的題目

2007-06-05 22:08:34 補充:
複製到撰寫區的時候記得把前面的空白去掉
改成空白鍵
因為我用全型空白來這邊排版
如果要輸出縱橫列的數字呀--
那就是
void show(int** a,int row,int col)
{
 for(int iRow=0; iRow<row; ++iRow)
  for(int iCol=0; iCol<cow; ++iCol)
   if(iRow==row)
    printf("%d",a[iRow][iCol]);
   else
    printf("%d",a[iRow][col]);
}

2007-06-05 22:39:00 補充:
show的式子寫錯了
void show(int** a,int maxRow,int maxCol,int row,int col)
{
 for(int iRow=0; iRow<maxRow; ++iRow)
  for(int iCol=0; iCol<maxCol; ++iCol)
   if(iRow==row||iCol==col)
    printf("%d ",a[iRow][iCol]);
}

最後就是 show(a,10,10,某列,某行);

2007-06-06 20:12:41 補充:
當然可以顯示質數表呀
質數表先被生出來了,後面要怎麼顯示都可以
參考: 我, 我, 我


收錄日期: 2021-04-27 17:14:10
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20070605000015KK09772

檢視 Wayback Machine 備份