7-55 素数对猜想 (20分)
让我们定义d
n
为:d
n
=p
n+1
−p
n
,其中p
i
是第i个素数。显然有d
1
=1,且对于n>1有d
n
是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数N(<10
5
),请计算不超过N的满足猜想的素数对的个数。
输入格式:
输入在一行给出正整数N。
输出格式:
在一行中输出不超过N的满足猜想的素数对的个数。
输入样例:
20
输出样例:
4
分析:
埃氏筛 0 1 不是素数 叠加素数筛;
#include<bits/stdc++.h>
using namespace std;
int prime[100009],book[100009];
void func(){
int t=0;
memset(book,1,sizeof(book));
book[0]=0,book[1]=0;
for(int i=0;i<=(100009);i++){
if(book[i]){
prime[t++]=i;
for(int j=2*i;j<=100009;j+=i)
book[j]=0;
}
}
}
int main(){
int n,sum=0;
cin>>n;
func();
for(int i=1;;i++){
if(prime[i]>n){
cout<<sum;
return 0;
}
if(prime[i]-prime[i-1]==2)sum++;
}
return 0;
}