1007素数对猜想(代码片段)

buanxu buanxu     2023-03-20     702

关键词:

1007 素数对猜想 (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

 

    这道题还是颇费了点儿功夫的,始用暴力查找,但是很明显这是行不通的的,因为会超时。但是我又不会其他方法了,于是去网上看了看。找到了一个埃拉托斯特尼筛子法,

它的基本思路是,删掉所有的合数,剩下的一定就是素数。于是这道题我们就用这个方法来寻找所有的素数,而且效率也很高。 看代码,代码注释的比较详细

 1 #include<iostream>
 2 #include<vector>
 3 using namespace std;
 4 int main() 
 5 //寻找素数用埃拉托斯特尼筛子法,基本思路:不是挑选出所有素数,而是筛掉所有的合数
 6     int n;
 7     cin>>n;
 8     vector<int> v(n,0);
 9     int k=0;
10     for(int i=2;i<=n/2;i++) //只需要一半就行,剔除v中的合数,剩下的即为素数
11     
12         k=i;
13         if(v[k] == 0) 
14         
15             while (k<n) 
16             
17                 k += i;
18                 if(k<n) 
19                     v[k]=1;  //标记为1代表不是素数
20             
21         
22     
23     vector<int> v1;
24     for(int i=2;i<n;i++) 
25     
26         if (v[i] == 0)
27             v1.push_back(i);
28     
29     int count=0;
30     for(unsigned int i=1;i<v1.size();i++)
31     
32         if(v1[i]-v1[i-1]==2)
33             count++;
34     
35     cout<<count;
36     return 0;
37 

有一个测试点没通过,找不出哪里有问题

技术图片

 

 

 

 

1007素数对猜想(代码片段)

让我们定义d?n??为:d?n??=p?n+1???p?n??,其中p?i??是第i个素数。显然有d?1??=1,且对于n>1有d?n??是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整数N(<),请计算不超过N的满足猜想的素数对的个数... 查看详情

1007素数对猜想(代码片段)

让我们定义d?n??为:d?n??=p?n+1??−p?n??,其中p?i??是第i个素数。显然有d?1??=1,且对于n>1有d?n??是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整数N(<),请计算不超过N的满足猜... 查看详情

pat乙级1007.素数对猜想(20)(代码片段)

1007.素数对猜想(20)让我们定义dn为:dn=pn+1–pn,其中pi是第i个素数。显然有d1=1且对于n>1有dn是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整数N(<105),请计算不超过N的满足... 查看详情

1007.素数对猜想(代码片段)

...我们定义dn 为:dn =pn+1 -pn,其中pi 是第i个素数。显然有d1=1且对于n>1有dn 是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整数N(<105),请计算不超过N的满足猜想的素数对的... 查看详情

patb1007素数对猜想(代码片段)

素数筛筛出规定范围内的所有素数存入数组遍历数组,如果满足于后边的差2,计数器加加#include<cstdio>constintmaxn=10000001;intprime[maxn]=0;boolp[maxn]=0;intpnum=0;voidFind_prime(intn)for(inti=2;i<=n;i++)if(p[i]==false)prime[pnum 查看详情

pat乙级.1007.素数对猜想(20)(代码片段)

...我们定义dn 为:dn =pn+1 -pn,其中pi 是第i个素数。显然有d1=1且对于n>1有dn 是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整数N(<105),请计算不超过N的满足猜想的素数对的... 查看详情

pat(basiclevel)practice1007素数对猜想(代码片段)

... 让我们定义d?n??为:d?n??=p?n+1???p?n??,其中p?i??是第i个素数。显然有d?1??=1,且对于n>1有d?n??是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整数N(<),请计算不超过N的满足猜想的素数对的... 查看详情

patb1007素数对猜想(20分)(代码片段)

/*1007??êy??2???*/#include<cstdio>constintmaxn=10000001;intprime[maxn]=0;boolp[maxn]=0;intpnum=0;voidFind_prime(intn)for(inti=2;i<=n;i++)if(p[i]==false)prime[pnum++]=i;for(intj=i+i;j&l 查看详情

1007素数对猜想(代码片段)

大致题意就是找出1到N中,满足素数相邻且差值为2的素数对数。#include"iostream"#include"cmath"usingnamespacestd;//判断素数boolisPrime(intn)if(n<=1)returnfalse;intt=sqrt(n);for(inti=2;i<=t;++i)if(n%i==0)returnfalse;returntrue;intmain()intn,i=3,cnt=0;cin>>n;for(i... 查看详情

pta乙级1007素数对猜想(20分)(代码片段)

  1#include<iostream>2#include<cmath>3usingnamespacestd;45boolisprime(inti)6for(intj=2;j<=sqrt(i);++j)7if(i%j==0)8return0;91011return1;1213intmain()14intn=0;15intcount= 查看详情

1007素数对猜想(代码片段)

1007 素数对猜想 (20分) 让我们定义d?n??为:d?n??=p?n+1??−p?n??,其中p?i??是第i个素数。显然有d?1??=1,且对于n>1有d?n??是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整... 查看详情

1007素数对猜想(20分)(代码片段)

1007素数对猜想(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... 查看详情

1007素数对猜想(20分)(代码片段)

1007素数对猜想(20分) 让我们定义d?n??为:d?n??=p?n+1??−p?n??,其中p?i??是第i个素数。显然有d?1??=1,且对于n>1有d?n??是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整数N(<10?... 查看详情

pat乙级1007(代码片段)

1007素数对猜想(20分)让我们定义d?n??为:d?n??=p?n+1??−p?n??,其中p?i??是第i个素数。显然有d?1??=1,且对于n>1有d?n??是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整数N(<10?5??)... 查看详情

pat-1007素数对猜想(代码片段)

题目:1007素数对猜想(20分)让我们定义dn为:dn=pn+1?pn,其中pi是第i个素数。显然有d1=1,且对于n>1有dn是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整数N(<10^5),请计算不超过N的满足猜... 查看详情

1007素数对猜想(代码片段)

让我们定义d?n??为:d?n??=p?n+1???p?n??,其中p?i??是第i个素数。显然有d?1??=1,且对于n>1有d?n??是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整数N(<10?5),请计算不超过N的满足猜想的素数对的... 查看详情

1007素数对猜想(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的满足猜想的素数对的... 查看详情

[pat乙级]practise1007素数对猜想(代码片段)

PAT(BasicLevel)Practice(中文)10071007素数对猜想让我们定义dn为:dn=pn+1?pn,其中pi是第i个素数。显然有d1=1,且对于n>1有dn是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整数N(<105),请计算不超... 查看详情