如果一个质数,在质数列表中的编号也是质数,那么就称之为质数中的质数。例如:3 5分别是排第2和第3的质数,所以他们是质数中的质数。现在给出一个数N,求>=N的最小的质数中的质数是多少(可以考虑用质数筛法来做)。
Input
输入一个数N(N <= 10^6)
Output
输出>=N的最小的质数中的质数。
Input示例
20
Output示例
31
#include<stdio.h> #include<stdio.h> #include<algorithm> #include<iostream> using namespace std; int a[1001000],b[1001000]; void init() {int k=1; a[0]=1; a[1]=1; b[0]=1; b[1]=1; for(int i=2;i<=1000100;i++) {if(a[i]==0) for(int j=i+i;j<=1000100;j=j+i) a[j]=1; } for(int i=2;i<=1000100;i++) if(a[i]==0) b[i]=k++; } int main() {init(); int n,m; scanf("%d",&n); for(int i=n;i<1000100;i++) {m=b[i]; if(a[m]==0&&a[i]==0) { printf("%d\n",i); break;} } }