您的位置:首页 > 其它

质数中的质数 SDUT 3305

2015-08-30 19:39 211 查看

题目描述

如果一个质数,它在质数中的编号也是质数,就称为质数中的质数。
例如3是一个排在第2位质数,所以3是质数中的质数,虽然7是一个质数,但7排在第4位,所以7不是质数中的质数
给你一个数n,求出 >=n 的一个最小的质数中的质数

输入

输入一个数n(0<=n <= 10^6)

输出

输出>=n的最小的质数中的质数

示例输入

2
3
4


示例输出

3
3
5


#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>

using namespace std;

int flog[1000210];
void getprime()//欧拉筛法标记素数
{

for(int i=2; i<=500100; i++)
{
if(flog[i]==0)
{
for(int j=i+i; j<1000200; j+=i)
{
flog[j]=1;
}
}
}
}

int main()
{
int n;
int asd[1000200];
memset(flog,0,sizeof(flog));
memset(asd,0,sizeof(asd));
getprime();
int p=1;
for(int i=2; i<=1000200; i++)//打一个表,把所有的素数都从小到大编号
{
if(flog[i]==0)
{
asd[i]=p++;
}
}
while(~scanf("%d",&n))
{
if(n==2||n==1||n==0)
printf("2\n");
else
{
int c=0;
int l=0;
for(int i=n; i<1000200; i++)
{
if(flog[i]==0)
{
if(flog[asd[i]]==0)
{
printf("%d\n",i);
break;
}
}
}
}

}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: