1007. 素数对猜想 (20) PAT乙级真题

来源:互联网 发布:藏宝阁抢号软件 编辑:程序博客网 时间:2024/06/05 05:27

1007. 素数对猜想 (20)

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

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

输入格式:

每个测试输入包含1个测试用例,给出正整数N。

输出格式:

每个测试用例的输出占一行,不超过N的满足猜想的素数对的个数。

输入样例:
20
输出样例:
4
因为2是第一个素数又明显不符合题目要求,所以我们其实是从3开始找的,3和5是第一对,以后每对最后的结尾必然是1和3、7和9或者是9和1(以5结尾的必能被5整除,而且成为一对以后就不能算进下一对了,比如3和5的下一对是7和9,而不是5和7)。所以我先是专门写了一个函数用来判断是不是素数的,然后每次循环计数的i都加2,如果是素数对就跳到下一个奇数上。代码如下:
#include<stdio.h>#include<math.h>int Sushu(int i);int main(void){    int n,s=0,i;    scanf("%d",&n);    if (n>=3) s=1;    for(i=5;i+2<=n;i+=2)    {        if (Sushu(i)&&Sushu(i+2))        {            s++;i+=2;        }    }    printf("%d\n",s);    return 0;}int Sushu(int i){    int f=1,j;    for(j=3;j<=sqrt(i);j+=2)    {        if (i%j==0)        {            f=0;break;        }    }    return f;}

原创粉丝点击