如果一个质数,在质数列表中的编号也是质数,那么就称之为质数中的质数。例如:3 5分别是排第2和第3的质数,所以他们是质数中的质数。现在给出一个数N,求>=N的最小的质数中的质数是多少(可以考虑用质数筛法来做)。
Input
输入一个数N(N <= 10^6)
Output
输出>=N的最小的质数中的质数。
Input示例
20
Output示例
31
#include <bits/stdc++.h>
const int maxn=1e6+200;
using namespace std;
bool a[maxn]={false};
int main()
{
long long n,i,j;
long long ans=0;
cin>>n;
a[1]=true;
for(i=2; i<maxn; i++)
{
if(!a[i])
{
ans++;
if(!a[ans]&&i>=n)
{
cout<<i<<endl;
break;
}
for(j=i*i; j<maxn; j+=i)
a[j]=true;
}
}
return 0;
}
本文介绍了一种寻找质数中的质数的方法,即质数在质数列表中的位置也是质数的情况。通过使用质数筛法,可以在限定的时间内找出大于等于给定数值N的最小质数中的质数。
836

被折叠的 条评论
为什么被折叠?



