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