质数中的质数(质数筛法)
如果一个质数,在质数列表中的编号也是质数,那么就称之为质数中的质数。例如:3 5分别是排第2和第3的质数,所以他们是质数中的质数。现在给出一个数N,求>=N的最小的质数中的质数是多少(可以考虑用质数筛法来做)。
收起
输入
输入一个数N(N <= 10^6)
输出
输出>=N的最小的质数中的质数。
输入样例
20
输出样例
31
【思路】:计算这个数是第几个素数--之后这个数是素数的前提下再判断序号是否为素数--题中说(求>=N的最小的质数中的质数是多少)即用for时当有一个满足条件的数时就直接结束循环;
C语言源程序如下:
#include<stdio.h>
#include<stdlib.h>
int PanDuanSuShu(int n);
int main()
{
int m,n,c=0;
scanf("%d",&m);
for(n=1;n<=m;n++)
{
if(PanDuanSuShu(n)==1)
{
c++;
}
}
for(n=m;;n++)
{
if(PanDuanSuShu(n)==1)
{
c++;
if(PanDuanSuShu(c)==1)
{
printf("%d\n",n);
exit(0);
}
}
}
return 0;
}
int PanDuanSuShu(int n)
{
int i=0;
if(n==1)return 0;
if(n==2)return 1;
if(n>=3)
{
for(i=2;i<n;i++)
{
if(n%i==0)
return 0;
}
return 1;
}
}