作业笔记-素数对猜想

7-2 素数对猜想
 

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

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

输入格式:

输入在一行给出正整数N

输出格式:

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

输入样例:20

输出样例:4
 
要先明确素数的求法,对于数字n,在1到根号n之间如果有整数可以除尽n,则n不是素数。
首先求出20以内所有的素数,并存入数组中,再依次检验是否前后素数差值为2,若为2则用计数器i++。
 1 #include <iostream>
 2 #include <math.h>
 3 #include <stdio.h>
 4 using namespace std;
 5 int main()
 6 {
 7     double m;//m为n的开方
 8     int a[1000000];
 9     a[0]=2;a[1]=3;
10     int n=4,j=2,s=0,N,sum,d;//s为最后得数
11     scanf("%d",&N);
12     
13     for(n=4;n<=N;n++)//全部质数
14     {
15     m=sqrt(n);
16         
17     for(int i=2;;)
18         {
19         if(n%i==0)  break;
20             else i++;
21         if(i>m)
22             {
23             a[j]=n;
24        //    cout<<"a["<<j<<"]="<<a[j]<<'
';
25             j++;
26             break;
27             }
28         }
29     }
30     sum=j;
31 
32         for(j=0;j<N;j++)
33         {
34             d=a[j+1]-a[j];
35             if(d==2)   {//cout<<"a["<<j+1<<"]-a["<<j<<"]="<<a[j+1]<<"-"<<a[j]<<"="<<2<<'
';
36                 s++;
37                 }
38         }
39         
40     cout<<s<<"
";
41 
42     }
43     
 
 
原文地址:https://www.cnblogs.com/loglian/p/12532691.html