让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数。显然有 d1=1 且对于n>1有 dn 是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数N (< 105),请计算不超过N的满足猜想的素数对的个数。
输入格式:每个测试输入包含1个测试用例,给出正整数N。
输出格式:每个测试用例的输出占一行,不超过N的满足猜想的素数对的个数。
输入样例:
20
输出样例:
4
1 #include<cstdio> 2 #include<iostream> 3 #include<cmath> 4 #include<cstring> 5 using namespace std; 6 7 int a[100005]; 8 9 bool prime(int num) 10 { 11 if(num==0||num==1) 12 return false; 13 else if(num==2||num==3) 14 return true; 15 else 16 { 17 for(int i=2;i<=sqrt((double)num)+1;i++) 18 if(num%i==0) 19 return false; 20 } 21 return true; 22 } 23 24 int main() 25 { 26 int n; 27 scanf("%d",&n); 28 memset(a,0,sizeof(a)); 29 for(int i=3;i<=n+1;i+=2) 30 { 31 if(prime(i)&&prime(i-2)) 32 a[i]=a[i-1]+1; 33 else 34 a[i]=a[i-1]; 35 a[i+1]=a[i]; 36 } 37 //for(int i=0;i<10000;i++) 38 printf("%d\n",a[n]); 39 return 0;; 40 41 }