2012年5月29日 星期二

程式撰寫練習(一)- 找出質數與質數個數

寫一個程式列出小於n之所有質數與個數,並找出最大質數



void main()
{
        FILE *fp_out1 = fopen("D:\\data4.txt","w+");  //建立檔案路徑
        FILE *fp_out2 = fopen("D:\\data5.txt","w+");
        FILE *fp_out3 = fopen("D:\\data6.txt","w+");
        int x,y,z,count1,count2,flag,N;               //定義變數
        int n1[1229],n2[10000];                   //定義矩陣
        count1=0;                               //初始化
        count2=0;

        //0 104 質數

        N=10000;
        for(int i=2;i<N;i++)
        {
                flag=1;            //設旗標為1
                for(int j=2;j<i;j++)
                {
                        if (i%j==0)     //若餘數為0
                        {
                                flag=0;   //令旗標為0
                                break;
                        }
                        flag=flag*1;
                }
                if(flag==1)  
                        {
                        count1++;
                        fprintf(fp_out1,"%d\t%d\n",i,count1);  //將結果寫到記事本
                        fprintf(fp_out2,"%d\n",i);
                        }
        }
        readData("D:\\data5.txt",n1, count1);  //010000之間的質數存成矩陣
        
      //104108質數

        for(int i=10000;i<100000;i++)
        {
                flag=1;
                for(int j=0;j<count1;j++)
                {
                        if (i%n1[j]==0)     //1萬到1億每一個數除以矩陣內的每一數
                        {
                                flag=0;
                                break;
                        }
                        flag=flag*1;
                }
                if(flag==1)
                        {
                        count2++;
                        fprintf(fp_out3,"%d\t%d\n",i,count2);
                        }
        }
        system("pause");
}




結果 :



0104的質數個數(以千為單位)

千為單位
質數個數
最大質數
0~1
168
997
1~2
135
1999
2~3
127
2999
3~4
120
3989
4~5
119
4999
5~6
114
5987
6~7
117
6997
7~8
107
7993
8~9
110
8999
9~10
112
9973
總計
質數個數
最大質數
0~10000
1229
9973

0105的質數個數(以萬為單位)

萬為單位
質數個數
最大質數
0~1
1229
9973
1~2
1033
19997
2~3
983
29989
3~4
958
39989
4~5
930
49999
5~6
924
59999
6~7
878
69997
7~8
902
79999
8~9
876
89989
9~10
879
99991
總計
質數個數
最大質數
0~100000
9592
99991

0106的質數個數(以十萬為單位)
十萬為單位
質數個數
最大質數
0~1
9592
99991
1~2
8392
199999
2~3
8013
299993
3~4
7863
399989
4~5
7678
499979
5~6
7560
599999
6~7
7445
699967
7~8
7408
799999
8~9
7323
899981
9~10
7224
999983
總計
質數個數
最大質數
0~1000000
78498
999983

0107的質數個數(以佰萬為單位)

佰萬為單位
質數個數
最大質數
0~1
78498
999983
1~2
70435
1999993
2~3
67883
2999999
3~4
66330
3999971
4~5
65367
4999999
5~6
64336
5999993
6~7
63799
6999997
7~8
63129
7999993
8~9
62712
8999993
9~10
62110
9999991
總計
質數個數
最大質數
0~10000000
664599
9999991

沒有留言:

張貼留言