1007 素数对猜想 (20 分)

1007 素数对猜想 (20 分)
 

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

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

输入格式:

输入在一行给出正整数N

输出格式:

在一行中输出不超过N的满足猜想的素数对的个数。

输入样例:

20

输出样例:

4


分析:比较麻烦的一点在于3-2等于1,但还是素数对,所以进行了单独考虑

 1 #include<iostream>
 2 #include<cmath>
 3 #include<algorithm>
 4 using namespace std;
 5 int main()
 6 {
 7     int n;
 8     while(cin>>n)
 9     {
10         int flag=0,a[100000],num=0;
11     for(int i=5;i<=n;i++)
12     {
13         int k=sqrt((double)i);
14         int s=0;
15         for(int j=2;j<=k;j++)
16         {
17             if(i%j==0)
18             {
19                 s=1;
20                 break;
21             }
22         }
23         if(s==0)
24         {
25             a[flag++]=i;
26         }
27     }
28     for(int i=1;i<flag;)
29     {
30             if((a[i]-a[i-1])==2)
31             {
32                 num++;
33                 i=i+2;
34             }
35             else
36                 i++;
37     }
38     if(n<=2)
39         cout<<0<<endl;
40     else if(n==3)
41         cout<<1<<endl;
42     else
43         cout<<num+1<<endl;
44     }
45 
46 }
原文地址:https://www.cnblogs.com/ygjojo/p/10722957.html