素数筛法

来源:互联网 发布:纵深作战 知乎 编辑:程序博客网 时间:2024/05/18 02:51
1181 质数中的质数(质数筛法)
题目来源: Sgu
基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题
 收藏
 关注
如果一个质数,在质数列表中的编号也是质数,那么就称之为质数中的质数。例如:3 5分别是排第2和第3的质数,所以他们是质数中的质数。现在给出一个数N,求>=N的最小的质数中的质数是多少(可以考虑用质数筛法来做)。
Input
输入一个数N(N <= 10^6)
Output
输出>=N的最小的质数中的质数。
Input示例
20
Output示例

31

#include <iostream>#include <cstring>using namespace std;int  mark[1000005],prime[1000005];typedef long long ll;bool isprimer(int a){    for(int i=2;i*i<=a;i++)    {        if(a%i==0)return false;    }    return true;}int main(){    int index=0;    memset(mark,0,sizeof(mark));    mark[0]=0;mark[1]=0;    for(int i=2;i<1000005;i++)    {        if(mark[i]==0)        {            for(int j=i+i;j<1000005;j+=i)            {                mark[j]=1;            }            prime[index]=i;            index++;        }    }    int i=0,n;    cin>>n;    while(i<index)    {        if(prime[i]>=n&&isprimer(i+1))            break;        i++;    }    cout<<prime[i]<<endl;    return 0;}


0 0
原创粉丝点击