质数中的质数(质数筛法)

如果一个质数,在质数列表中的编号也是质数,那么就称之为质数中的质数。例如:3 5分别是排第2和第3的质数,所以他们是质数中的质数。现在给出一个数N,求>=N的最小的质数中的质数是多少(可以考虑用质数筛法来做)。
 
Input
输入一个数N(N <= 10^6)
Output
输出>=N的最小的质数中的质数。
Input示例
20
Output示例
31
李陶冶  (题目提供者)
 
C++的运行时限为:1000 ms ,空间限制为:131072 KB
代码实现:
 1 #include<cstdio>
 2 const int maxn=1100000;
 3 const int minn=10000;
 4 int n,a,b;
 5 int s[maxn/10],m;
 6 bool v[maxn];
 7 int main(){
 8     scanf("%d",&n);
 9     v[0]=v[1]=1;
10     for(int i=2;i<=n+minn;i++)
11     if(!v[i]){
12         a=i+i;s[m++]=i;
13         while(a<=n+minn){v[a]=1;a+=i;}
14     }
15     while(s[b]<n||v[b+1]) b++;
16     printf("%d\n",s[b]);
17     return 0;
18 }

题目来源:51Nod

转载于:https://www.cnblogs.com/J-william/p/6366436.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值