C語言:輸入一個數,輸出比這個數小的所有素數,並求出個數。


//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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM