1007. 素数对猜想 (20)

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

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

输入格式:每个测试输入包含1个测试用例,给出正整数N。

输出格式:每个测试用例的输出占一行,不超过N的满足猜想的素数对的个数。

输入样例:

20

输出样例:

4

关于素数判断函数:

  第1种:按照定义进行判断,这种函数在N(<105)很大时,计算量非常大,在提交程序后显示“运算超时”:

1 bool prime(int num){
2     int i;
3     if(num==1) return false;
4     for(i=2;i<num;i++)
5         if(num%i==0) return false;
6     return true;
7 }

  第2种:在N的平方根范围内进行判断,大大减小运算量,故使用此函数:

1 bool prime(int num){
2     int i,k;
3     if(num==1) return false;
4     k=int(sqrt(num));
5     for(i=2;i<=k;i++)
6         if(num%i==0) return false;
7     return true;
8 }

程序设计:

方法一:

  1.求出不超过N范围内的所有素数,并将其存储在数组prime_num[]中,由于105范围内一共有9592个素数,所以数组元素个数不应小于9592

  2.对prime_num[]数组中的元素进行比较,求出后一位比前一位数值大2的对数

C++ 代码如下:

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 bool prime(int num){
 4     int i,k;
 5     if(num==1) return false;
 6     k=int(sqrt(num));
 7     for(i=2;i<=k;i++)
 8         if(num%i==0) return false;
 9     return true;
10 }
11 int main() {
12     int prime_num[9600];
13     int i,j=0,count=0;
14     long n;
15     cin>>n;
16     for(i=2;i<=n;i++){
17         if(prime(i)){
18             prime_num[j]=i;
19             j++;
20         }
21         else continue;
22     }
23     for(i=0;i<j-1;i++)
24         if(prime_num[i+1]-prime_num[i]==2) ++count;
25     cout<<count;
26     system("pause");
27     return 0;
28 }

C++ Code 1

方法二:

  当N>2时,所有的素数均为奇数,故只需求出相邻奇数中全为素数的对数即可

C++ 代码如下:

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 bool prime(int num){
 4     int i,k;
 5     if(num==1) return false;
 6     k=int(sqrt(num));
 7     for(i=2;i<=k;i++)
 8         if(num%i==0) return false;
 9     return true;
10 }
11 int main() {
12     int i,count=0;
13     long n;
14     cin>>n;
15     for(i=3;i+2<=n;i+=2){
16         if(prime(i))
17             if(prime(i+2)) count++;
18         else continue;
19     }
20     cout<<count;
21     system("pause");
22     return 0;
23 }

C++ Code 2

转载于:https://www.cnblogs.com/pgzhang/p/8928499.html

【PAT】1007. 素数对猜想 (20)相关推荐

  1. 1007 素数对猜想 (20分)

    1007 素数对猜想 (20分) 让我们定义 ​​ 为:dn=pn+1−pnd_{n} = p_{n+1} - p_{n}dn​=pn+1​−pn​,其中pip_{i}pi​是第iii个素数.显然有d ...

  2. C++学习之路 | PTA乙级—— 1007 素数对猜想 (20分)(精简)

    1007 素数对猜想 (20分) 让我们定义d ​n ​​ 为:d ​n ​​ =p ​n+1 ​​ −p ​n ​​ ,其中p ​i ​​ 是第i个素数.显然有d ​1 ​​ =1,且对于n> ...

  3. 1007 素数对猜想 (20分)(C语言)

    1007 素数对猜想 (20分) 让我们定义d ​n ​​ 为:d ​n ​​ =p ​n+1 ​​ −p ​n ​​ ,其中p ​i ​​ 是第i个素数.显然有d ​1 ​​ =1,且对于n> ...

  4. 1007. 素数对猜想 (20)-PAT乙级真题

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

  5. 满分最优解法:1007 素数对猜想 (20分)

    立志用更少的代码做更高效的表达 Pat乙级最优化代码+题解+分析汇总-->传送门 让我们定义dn ​​ 为:dn=pn+1​−pn,其中pi是第i个素数.显然有d1=1,且对于n>1有d​ ...

  6. 1007 素数对猜想 (20 分)(c语言)

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

  7. 1007 素数对猜想 (20 分)测试点

    让我们定义d​n​​为:d​n​​=p​n+1​​−p​n​​,其中p​i​​是第i个素数.显然有d​1​​=1,且对于n>1有d​n​​是偶数."素数对猜想"认为" ...

  8. 【PAT乙级】1007 素数对猜想 (20 分)

    https://pintia.cn/problem-sets/994805260223102976/problems/994805317546655744 埃氏筛法 #include<cstdi ...

  9. PAT(乙级) 1007 素数对猜想 (20 分)(C语言)

    分析:这道题在数字比较大的时候容易超时,需要更简单的算法,我这里采用了最原始最朴素的算法来处理,为了让所有测试点通过对源代码做了一点点修改 #include<stdio.h> int is ...

最新文章

  1. opencv mat相关资料整理
  2. 自学python当黑客-为什么黑客都用Python
  3. 深入理解建造者模式 ——组装复杂的实例
  4. SQLite学习手册(锁和并发控制)
  5. 面试官:Thread.sleep(0) 有什么用?
  6. 对话框大小与像素关系
  7. 特斯拉又有新游戏可以玩了 网友:行车打游戏,亲人两行泪
  8. [解决] term.js 记录遇到的问题
  9. vue中解决three.js出现内存泄漏丢失上下文问题
  10. 根据crash学习用户空间程序内存布局
  11. python—Django面试题汇总
  12. linux系统ss命令详解,ss命令 - Linux命令大全 | linux教程
  13. 2014蓝桥杯--史丰收速算(C++)
  14. 安装了vmWare15,打开虚拟机时,电脑总是重启,怎么办?
  15. 国美易卡借助云平台,国美易卡提升了用户体验
  16. 有利网2022最新兑付消息,开展部分债务资金清退
  17. Linux系统的时区时间设置
  18. 力扣(13.278)补8.23
  19. 浅析资源调度框架YARN
  20. 【make】make常见问题

热门文章

  1. Python 技术篇-用os库实现本地文件重命名实例演示
  2. STM32 BOOT0连接不当造成死机
  3. 在vim下按F4自动添加作者信息,文件创作时间等
  4. [watevrCTF-2019]Pickle Store
  5. gnuplot_i 文件的说明,翻译成的中文
  6. Kth Largest Element in an Array
  7. opencv求解AX=0
  8. [***]HZOJ 柱状图
  9. python 缺失值处理(Imputation)
  10. BZOJ2244 [SDOI2011]拦截导弹 【cdq分治 + 树状数组】