【浙江大学PAT真题练习乙级】1007 素数对猜想 (20分) 真题解析
文章目录
- 题目描述
- 思路解析
- C++实现
- Python实现
题目描述
让我们定义dnd_{n}dn为dn=pn+1−pnd_{n}=p_{n+1}-p_{n}dn=pn+1−pn,其中pip_{i}pi是第iii个素数。显然有d1=1d_{1}=1d1=1,且对于n>1n>1n>1有dnd_{n}dn是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数N
(<105<10^{5}<105 ),请计算不超过N
的满足猜想的素数对的个数。
输入格式:
输入在一行给出正整数N
。
输出格式:
在一行中输出不超过N
的满足猜想的素数对的个数。
输入样例:
20
输出样例:
4
思路解析
- c++
这道题目的关键就在于找素数,用for循环判断每个数是不是素数,如果是再与前一个素数对比,若差值为2则计数count加1。
素数的查找可以定义一个函数,对输入进来的数先开方得到kkk,然后做for循环到kkk,如果能被整除则不是素数。这里要注意任何数除1都能被整除,所以i要从2开始。
如果没有找到素数的话iii就会大于kkk。如果输入的待验证数是1,则开方向下取整k=1k=1k=1,输入的待验证数是2、3同理。
- python
上述C++的思想python实现就炸了,超时了,因此想了好久,后来还是百度去看看找素数的时间复杂度能不能降到O(n)O(n)O(n),没想到还真有,大概的意思就是先创建一个数组all_num(2-input_num),对里面每个数只判断一遍是不是素数,判断的依据就是如果一个数是之前素数的倍数,那这个数就一定不是素数(由于2是素数,所以二的倍数全部设置为0,依此类推,如果循环到某个数大于0,就一定不是之前某个素数的倍数,就是一个素数啦)。
有点绕,具体可以看代码。
C++实现
#include<stdio.h>
#include<math.h>int issushu(int num){int i;int k = (int)sqrt(num);for(i=2; i<=k;i++){if(num%i==0){return 0;}}if(i>k){return 1;}
}int main(){int input_num;int p_nn = 0;int p_n = 0;int count_num = 0;scanf("%d", &input_num);for(int i=0; i<=input_num; i++){if(issushu(i)){p_n = p_nn;p_nn = i;if(p_nn-p_n==2){count_num++;}}}printf("%d", count_num);
}
Python实现
input_num = int(input())
all_num = [i for i in range(0, input_num+1)]count = 0
p_n = 1
for i in all_num:if all_num[i] > 1:for j in range(2*i, input_num+1, i):all_num[j]=0if (all_num[i]-p_n)==2:count += 1p_n = all_num[i]print(count)
【浙江大学PAT真题练习乙级】1007 素数对猜想 (20分) 真题解析相关推荐
- C++学习之路 | PTA乙级—— 1007 素数对猜想 (20分)(精简)
1007 素数对猜想 (20分) 让我们定义d n 为:d n =p n+1 −p n ,其中p i 是第i个素数.显然有d 1 =1,且对于n> ...
- PAT(乙级) 1007 素数对猜想 (20 分)(C语言)
分析:这道题在数字比较大的时候容易超时,需要更简单的算法,我这里采用了最原始最朴素的算法来处理,为了让所有测试点通过对源代码做了一点点修改 #include<stdio.h> int is ...
- 1007 素数对猜想 (20分)
1007 素数对猜想 (20分) 让我们定义 为:dn=pn+1−pnd_{n} = p_{n+1} - p_{n}dn=pn+1−pn,其中pip_{i}pi是第iii个素数.显然有d ...
- 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有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)
1007. 素数对猜想 (20) 让我们定义 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有 dn 是偶数."素数对猜想"认为"存在无穷多对相邻且 ...
最新文章
- Jquery- 错误消息Date未定义,String未定义
- 有向图生成树是如何画的_漫画:什么是最小生成树?
- Spring4.x(7)---对象的生命周期方法
- 废旧 Android 手机如何改造成 Linux 服务器?
- web myeclipse为什么连接不上css_Web技巧 (03)
- android 包名工具,查看包名(安卓应用包名查看工具)
- 人工智能--一种现代的方法(知识点总结第一章)
- 招标采购专业实务课程大纲--刘小明老师
- zend新建php项目,如何使用Zend Studio创建PHP项目
- 小米全系列机型代码查询与 制作rom分区架构图示
- 制作u盘winpe启动盘_u盘启动盘制作工具 纯净+好用,原来不止是 微pe
- 硕士论文结构分析与如何写作
- safari 插件安装之alipay
- Zynga和StarLark庆祝《Golf Rival》面世四周年
- 《互联网的那些事之时代》第二回:春江潮水连海平,海上明月共潮生
- 电商快递电子面单对接使用方法
- 高老师架构设计思考短句集(2)
- CAD数据文件格式DXF部分实体(圆弧、椭圆、凸度)解析[原理讲解+公式推导+java实现]
- 最好用的数学神器Mathpix Snip-公式神器,只要截图就能识别公式,手写的公式都能识别
- 使用火车头采集器笔记
热门文章
- 什么是SOHO一族?
- 047——VUE中css过渡动作实例
- Event事件-基础
- hdu - 5033 - Building(单调栈)
- AsnycTask的内部的实现机制
- 前端常用功能记录(一)
- python 如何运行程序
- CentOS+Apache+Mysql+Php安装及优化配置小记
- 社团报名系统php,php85高校学生社团管理系统
- java 文件下载 并发_高并发下载tomcat下的文件时,发生java.net.SocketException: Connection reset解决方案...