已知素数序列为 2、3、5、7、11、13、17、19、23、29……,即素数的第一个是 2,第二个 是 3,第三个是 5……那么,随便挑一个数,若是素数,能确定是第几个素数吗?如果不是 素数,则输出 0。 输入格式: 测试数据有多组,处理到文件尾。每组测试输入一正整数 N(1≤N≤1000000)。 输出格式: 对于每组测试,输出占一行,如果输入的正整数是素数,则输出其排位,否则输出 0。
输入样例:
2
6
4
5
13
991703
输出样例:
1
0
0
3
6
77901
#include <stdio.h>
#include <math.h>
int prime(int x)//求素数函数,素数返回 1,否则返回 0
{ int i;
for(i=2;i<=sqrt(x);i++)
if (x%i==0) return(0);
return(1);
}
int main(void)
{ int n,i,s;
while((scanf("%d",&n))!=EOF)
{ s=0;
if(prime(n)==0)
printf("%d\n",s);
else
{ for (i=1;i<=n;i=i+2)
if(prime(i)==1) s++;
printf("%d\n",s);
}
}
return 0;
}