1007 素数对猜想 (20 分)

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

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

输入格式:

输入在一行给出正整数N

输出格式:

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

输入样例:

20

输出样例:

4


问题解析:素数 2,3,5,7,11,13...,第一组2,3 d1=1,第二组5,7  d2=2,找出集合内有多少对相邻且差为2的素数即可。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int prime(int num);
int main(void)
{
    int num,i,j=0,a[10000],count=0;
    scanf("%d",&num);
    for (i=2;i<=num;i++)    //建立素数列表
        if (prime(i))
        {
            a[j]=i;
            j++;
        }
    for (i=0;i<j-1;i++)
        if (a[i+1]-a[i]==2)     //满足相邻素数差为2
            count++;
    printf("%d",count);
    system("pause");
    return 0;
}
int prime(int num)      //找出素数
{
    int n=sqrt(num),i,ret=1;
    for (i=2;i<=n;i++)
    {
        if (num%i==0)
        {
            ret=0;
            break;
        }
    }
    return ret;
}

 

posted @ 2018-12-10 17:18  平生我不知  阅读(252)  评论(0)    收藏  举报