首页 > 其他 > 详细

51Nod - 1181 质数中的质数(质数筛法)

时间:2017-08-18 09:12:10      阅读:240      评论:0      收藏:0      [点我收藏+]

如果一个质数,在质数列表中的编号也是质数,那么就称之为质数中的质数。例如:3 5分别是排第2和第3的质数,所以他们是质数中的质数。现在给出一个数N,求>=N的最小的质数中的质数是多少(可以考虑用质数筛法来做)。

 

Input输入一个数N(N <= 10^6)Output输出>=N的最小的质数中的质数。Sample Input

20

Sample Output

31

用eular质数筛即可

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cmath>
 4 #include<cstring>
 5 #include<algorithm>
 6 
 7 using namespace std;
 8 char isprime[10000005];
 9 int primelist[10000005];
10 
11 int Eular(int n)
12 {
13     int cnt=0,x;
14     memset(isprime,1,sizeof(isprime));
15     int i=2;
16     while(x<n)
17     {
18         if(isprime[i])
19         {
20             cnt++;
21             primelist[cnt]=i;
22             if(isprime[cnt])
23                 x=i;
24         }
25         for(int j=1;j<=cnt&&i*primelist[j]<=1e7;j++)
26         {
27             isprime[i*primelist[j]]=0;
28             if(i%primelist[j]==0)
29                 break;
30         }
31         i++;
32     }
33     return x;
34 }
35 
36 int main()
37 {
38     int n;
39     while(~scanf("%d",&n))
40     {
41         printf("%d\n",Eular(n));
42     }
43     
44     
45     return 0;
46 }

 

51Nod - 1181 质数中的质数(质数筛法)

原文:http://www.cnblogs.com/xibeiw/p/7387661.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!