描述
让我们定义 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; }