39:第n小的質數


39:第n小的質數
    總時間限制:    1000ms    內存限制:    65536kB
描述
    輸入一個正整數n,求第n小的質數。
輸入
    一個不超過10000的正整數n。
輸出
    第n小的質數。
樣例輸入
    10
樣例輸出
    29

方法一:老實枚舉計數尋找到第n個質數然后輸出。

 1 #include<stdio.h>
 2 #include<math.h>
 3 int main(int argc, char *argv[])
 4 {
 5     long i,n,count;
 6     long j,flag,t;
 7     scanf("%d",&n);  //需要尋找第n個質數 
 8     count=0;    //已經尋找到count個 
 9     
10     i=2;
11     //i從2開始逐漸增大。依次判斷i的值是否是質數並計數 
12     while(count<n)
13     {
14         //判斷i是否質數
15         j=2;flag=0;t=sqrt(i);
16         while(j<=t)
17         {
18             if(i%j==0)
19             {
20                 flag=1;
21                 break;
22             }
23             j++;
24         }
25         //如果i是質數,count計數器加1 
26         if(flag==0)   count++;
27         i++;//准備判斷下一個數 
28     }
29     printf("%d\n",i-1);
30     return 0;
31 }

方法二:離線計算,先打印出10000質數存到數組中,然后……呵呵

把上面的代碼稍微修改一下,用來生成質數並輸出到文件里面:

 1 #include<stdio.h>
 2 #include<math.h>
 3 int main(int argc, char *argv[])
 4 {
 5     long i,n,count;
 6     long j,flag,t;
 7     freopen("39.out","w",stdout);
 8     //scanf("%d",&n);  //需要尋找第n個質數 
 9     n=10003;
10     count=0;    //已經尋找到count個 
11     
12     i=2;
13     //i從2開始逐漸增大。依次判斷i的值是否是質數並計數 
14     while(count<n)
15     {
16         //判斷i是否質數
17         j=2;flag=0;t=sqrt(i);
18         while(j<=t)
19         {
20             if(i%j==0)
21             {
22                 flag=1;
23                 break;
24             }
25             j++;
26         }
27         //如果i是質數,count計數器加1 
28         if(flag==0)
29         {
30             count++;
31             printf("%d,",i);
32         }
33         i++;//准備判斷下一個數 
34     }
35     //printf("%d\n",i-1);
36     return 0;
37 }
View Code

然后復制文件當中的數據到代碼里面構造數組嘿嘿嘿

 1 #include <stdio.h>
 2 int main(int argc, char *argv[])
 3 {
 4     long a[10003]=
 5     {   //為了網頁打開速度快一點,不寫完數據了呵呵
 6         2,3,5,7,11,13,17,19,23,29,31,……   
 7     };
 8     int n;
 9     scanf("%d",&n);
10     printf("%d\n",a[n-1]);
11     return 0;
12 }

嗯,投機取巧了呵呵

 


免責聲明!

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



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