题目链接:
如果一个质数,在质数列表中的编号也是质数,那么就称之为质数中的质数。例如:3 5分别是排第2和第3的质数,所以他们是质数中的质数。现在给出一个数N,求>=N的最小的质数中的质数是多少(可以考虑用质数筛法来做)。
Input
输入一个数N(N <= 10^6)
Output
输出>=N的最小的质数中的质数。
Input示例
20
Output示例
31
1 #include2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define ll long long 9 const int N=10005;10 const int mod=1e9+7;11 const int maxn=1e7;12 int prime[maxn];13 void getPrime()14 {15 memset(prime,0,sizeof(prime));16 for(int i=2;i<=maxn;i++){17 if(!prime[i]) prime[++prime[0]]=i;18 for(int j=1;j<=prime[0]&&prime[j]<=maxn/i;j++){19 prime[prime[j]*i]=1;20 if(i%prime[j]==0) break;21 }22 }23 }24 int main()25 {26 int n;27 getPrime();28 while(cin>>n){29 int flag=0;30 for(int i=1;i<=n;i++){31 if(prime[i]>=n){32 flag=i;33 break;34 }35 }36 for(int i=1;i<=flag;i++){37 if(prime[i]>=flag){38 flag=i;39 break;40 }41 }42 cout< <