51NOD 1181 质数中的质数(质数筛法)

来源:互联网 发布:淘宝一钻多少笔交易 编辑:程序博客网 时间:2024/05/20 18:51

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

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

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

31

题解:一般解法打素数表然后直接查找是不是符合条件即可。

AC代码:

#include<iostream>#include<cstring>using namespace std;const int maxn = 1000200;int a[maxn];int prime[maxn];int p,n;void prime1(){    memset(a,0,sizeof(a));    a[0]=a[1]=1;    p=1;    for(int i=2;i<=maxn;i++)    {        if(a[i]==0)        {            prime[p++]=i;            for(int j=2*i;j<=maxn;j+=i)a[j]=1;        }    }}int main(){        cin>>n;        prime1();        int i;        while(1)        {            for(i=1;i<=p;i++)            {                if(n==prime[i])break;            }            if(a[n]==0&&a[i]==0)break;            n++;        }        cout<<n<<endl;}


原创粉丝点击