PTA-素数对猜想

来源:互联网 发布:学生网络礼仪 编辑:程序博客网 时间:2024/05/21 17:44

这是PTA上的中国大学MOOC数据结构-起步能力测试题,如下:

自测-2 素数对猜想(20 分)

让我们定义dn为:dn=pn+1pn,其中pi是第i个素数。显然有d1=1,且对于n>1dn是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。

现给定任意正整数N(<105),请计算不超过N的满足猜想的素数对的个数。

输入格式:

输入在一行给出正整数N

输出格式:

在一行中输出不超过N的满足猜想的素数对的个数。

输入样例:

20

输出样例:

4

#include<stdio.h>#include<math.h>int IsPrime(int n)//判断素数的函数{int i;for(i=2;i<=sqrt(n);i++){if(n%i==0)return 0;}return 1;}int main(){int N;scanf("%d",&N);int i,count=0;for(i=3;i<=N-2;i+=2){if(IsPrime(i)&&IsPrime(i+2))count++; }printf("%d\n",count); return 0;}
要说的是,在判断素数时,若for(i=2;i<n/2;i+=2),则会有一个示例运行超时,判断素数的终止条件还是得用sqrt(n),效率更高。