English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

使用rand 連續產生亂數直到出現10 個質數
請使用function 來判斷所產生之數字是否為質數
所產生之10 個質數請存於array 之中
並且找出這10 個質數之最大值與最小值

註:亂數請使用rand( ) 以及 srand( )來撰寫

2007-06-18 11:03:10 · 2 個解答 · 發問者 阿撇 2 in 電腦與網際網路 程式設計

2 個解答

//Power by Visual Studio 2005
#include
#include
#include
#include
#ifndef randomize
#define randomize() srand((unsigned)time(NULL))
#endif
#define LENGTH 10
#define MAX 100
int isprime(int number){//Check number
int i,retBoolean=1;
//1 is True, 0 is False
for(i=2;i<=(int)sqrt(number);i++){
if((number%i)==0){
retBoolean=0;//false
break;
}
}
return retBoolean;//return boolean value
}
void sort(int *Num, int Len){
int i,j,temp;
for(i=0;i for(j=i;j if(Num[i]>Num[j])
temp=Num[i],Num[i]=Num[j],Num[j]=temp;
}
int main(int argc, char* argv[]){
//==========START==========//
int i,prime[LENGTH],num;
randomize();
for(i=0;i do{
num=(rand()%MAX)+1;
}while(!isprime(num));
prime[i]=num,printf(" %d",prime[i]);
}
sort(prime, (int)sizeof(prime)/sizeof(int));
printf("\nMAX= %d\nMIN= %d\n",prime[0],prime[LENGTH-1]);
//==========END==========//
system("PAUSE");
return 0;
}

2007-06-18 12:48:09 · answer #1 · answered by Big_John-tw 7 · 0 0

#include
#include
#include
#include
#define NUM 10
#define MAX 32767 //這有點畫蛇添足,純為便於用小一些的數以利檢測
//這個函式可以很有效率的辨別X是否為質數
int isprime(int x){
if (x==2) return 1;
if (x%2==0) return 0;
for(int i=3;i*i<=x;i+=2) if(x%i==0) return 0;
return 1;
}

int main( ){
int prm[NUM],i,j,temp;
//亂數產生NUM個質數的陣列
srand((unsigned)time(NULL));
for(i=0;i //顯示排序前的陣列內容
printf("The prime array before sorting:\n");
for(i=0;i //由小至大排序
for(i=0;i for(j=i+1;j if(prm[i]>prm[j])
{temp=prm[i]; prm[i]=prm[j]; prm[j]=temp;}
//顯示排序後的陣列內容
printf("\nThe prime array after sorting:\n");
for(i=0;i //顯示最大值及最小值
printf("\nMax= %d , Min= %d\n",prm[0],prm[NUM-1]);
getch(); //等候按鍵
}

2007-06-18 15:08:38 · answer #2 · answered by 東邪無弓 7 · 0 0

fedest.com, questions and answers