//C語言:輸入一個數,輸出比這個數小的所有素數,並求出個數。
1 #include<conio.h> 2 #include<stdio.h> 3 #include<stdlib.h> 4 #define MAX 100 5 int fun(int lim, int aa[MAX]) 6 { 7 int i, j,k=0; 8 for (i = 2; i <= lim; i++)//羅列每個數 9 { 10 for (j = 2; j < i; j++)//判斷是否為質數(素數:只可以被1和本身整除,必須大於1) 11 { 12 if (i%j == 0) break; 13 } 14 if (j >= i) aa[k++] = i; 15 } 16 return k; 17 } 18 void main() 19 { 20 FILE *wf; 21 int limit,i,sum; 22 int aa[MAX]; 23 system("CLS");//清屏 24 printf("輸入一個整數:"); 25 scanf("%d",&limit); 26 sum=fun(limit,aa); 27 for(i=0;i<sum;i++) 28 { 29 if(i%10==0&&i!=0) /*每行輸出10個數*/ 30 printf("\n "); 31 printf("%5d ",aa[i]); 32 } 33 /******************************/ 34 wf=fopen("out.dat","w"); 35 sum=fun(15,aa); 36 for(i=0;i<sum;i++) 37 { 38 if(i%10==0&&i!=0) /*每行輸出10個數*/ 39 fprintf(wf,"\n"); 40 fprintf(wf,"%5d ",aa[i]);//向文件中寫入。 41 } 42 fclose(wf); 43 /*****************************/ 44 }
另一種方法:使用標志位。切記要進行標志位的復原。
1 #include<conio.h> 2 #include<stdio.h> 3 #include<stdlib.h> 4 #define MAX 100 5 int fun(int lim, int aa[MAX]) 6 { 7 int i,a=0,j=0; 8 while (lim > 1) 9 { 10 for (i = 2; i < lim; i++) 11 { 12 if (lim%i == 0) a = 1; 13 } 14 if (a == 0) 15 { 16 aa[j++] = lim; 17 } 18 a = 0;//切記使用標志位要記得復位。 19 lim--; 20 } 21 return j; 22 } 23 void main() 24 { 25 FILE *wf; 26 int limit,i,sum; 27 int aa[MAX]; 28 system("CLS"); 29 printf("輸入一個整數:"); 30 scanf("%d",&limit); 31 sum=fun(limit,aa); 32 for(i=0;i<sum;i++) 33 { 34 if(i%10==0&&i!=0) /*每行輸出10個數*/ 35 printf("\n "); 36 printf("%5d ",aa[i]); 37 } 38 /******************************/ 39 wf=fopen("out.dat","w"); 40 sum=fun(15,aa); 41 for(i=0;i<sum;i++) 42 { 43 if(i%10==0&&i!=0) /*每行輸出10個數*/ 44 fprintf(wf,"\n"); 45 fprintf(wf,"%5d ",aa[i]); 46 } 47 fclose(wf); 48 /*****************************/ 49 }