【PAT】1007. 素数对猜想 (20)
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)相关推荐
- 1007 素数对猜想 (20分)
1007 素数对猜想 (20分) 让我们定义 为:dn=pn+1−pnd_{n} = p_{n+1} - p_{n}dn=pn+1−pn,其中pip_{i}pi是第iii个素数.显然有d ...
- C++学习之路 | PTA乙级—— 1007 素数对猜想 (20分)(精简)
1007 素数对猜想 (20分) 让我们定义d n 为:d n =p n+1 −p n ,其中p i 是第i个素数.显然有d 1 =1,且对于n> ...
- 1007 素数对猜想 (20分)(C语言)
1007 素数对猜想 (20分) 让我们定义d n 为:d n =p n+1 −p n ,其中p i 是第i个素数.显然有d 1 =1,且对于n> ...
- 1007. 素数对猜想 (20)-PAT乙级真题
让我们定义 dn 为:dn = pn+1 – pn,其中 pi 是第i个素数.显然有 d1=1 且对于n>1有 dn 是偶数."素数对猜想"认为"存在无穷多对相邻且 ...
- 满分最优解法:1007 素数对猜想 (20分)
立志用更少的代码做更高效的表达 Pat乙级最优化代码+题解+分析汇总-->传送门 让我们定义dn 为:dn=pn+1−pn,其中pi是第i个素数.显然有d1=1,且对于n>1有d ...
- 1007 素数对猜想 (20 分)(c语言)
让我们定义dn为:dn=pn+1−pn,其中pi是第i个素数.显然有d1=1,且对于n>1有dn是偶数."素数对猜想"认为"存在无穷多对相邻且差为2的 ...
- 1007 素数对猜想 (20 分)测试点
让我们定义dn为:dn=pn+1−pn,其中pi是第i个素数.显然有d1=1,且对于n>1有dn是偶数."素数对猜想"认为" ...
- 【PAT乙级】1007 素数对猜想 (20 分)
https://pintia.cn/problem-sets/994805260223102976/problems/994805317546655744 埃氏筛法 #include<cstdi ...
- PAT(乙级) 1007 素数对猜想 (20 分)(C语言)
分析:这道题在数字比较大的时候容易超时,需要更简单的算法,我这里采用了最原始最朴素的算法来处理,为了让所有测试点通过对源代码做了一点点修改 #include<stdio.h> int is ...
最新文章
- opencv mat相关资料整理
- 自学python当黑客-为什么黑客都用Python
- 深入理解建造者模式 ——组装复杂的实例
- SQLite学习手册(锁和并发控制)
- 面试官:Thread.sleep(0) 有什么用?
- 对话框大小与像素关系
- 特斯拉又有新游戏可以玩了 网友:行车打游戏,亲人两行泪
- [解决] term.js 记录遇到的问题
- vue中解决three.js出现内存泄漏丢失上下文问题
- 根据crash学习用户空间程序内存布局
- python—Django面试题汇总
- linux系统ss命令详解,ss命令 - Linux命令大全 | linux教程
- 2014蓝桥杯--史丰收速算(C++)
- 安装了vmWare15,打开虚拟机时,电脑总是重启,怎么办?
- 国美易卡借助云平台,国美易卡提升了用户体验
- 有利网2022最新兑付消息,开展部分债务资金清退
- Linux系统的时区时间设置
- 力扣(13.278)补8.23
- 浅析资源调度框架YARN
- 【make】make常见问题
热门文章
- Python 技术篇-用os库实现本地文件重命名实例演示
- STM32 BOOT0连接不当造成死机
- 在vim下按F4自动添加作者信息,文件创作时间等
- [watevrCTF-2019]Pickle Store
- gnuplot_i 文件的说明,翻译成的中文
- Kth Largest Element in an Array
- opencv求解AX=0
- [***]HZOJ 柱状图
- python 缺失值处理(Imputation)
- BZOJ2244 [SDOI2011]拦截导弹 【cdq分治 + 树状数组】