博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

素数对猜想

Posted on 2018-04-23 21:55  薄辉'静谧  阅读(155)  评论(0编辑  收藏  举报

描述

 

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

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

 

输入

 

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

 

输出

 

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

 

样例输入

 20

样例输出

4

代码测试:

#include<iostream>
#include<cstring>
#include<cmath>
#define Max 100010
using namespace std;
int P[Max];
void Prime(){  //打印素数表 
    memset(P,0,sizeof(P));
    P[0]=1;P[1]=1;
    for(int i=2;i<=Max;i++){
        if(!P[i]){  //如果是素数,那么 倍数为合数 
            for(int j=2;i*j<=Max;j++)
                P[i*j]=1;
        }
    }
}
int main(){
    Prime();
    int n;
    cin>>n;
    int ans=0,cnt=0;
    for(int i=3;i<=n;i++){
        if(!P[i]){
            if(i-ans==2) cnt++;
            ans=i;
        }
    }
    cout<<cnt<<endl;
}
View Code