【Python】PAT-1007-素数对猜想
1. 题目描述
1007 素数对猜想 (20 分)
让我们定义d**n为:d**n=p**n+1−p**n,其中p**i是第i个素数。显然有d1=1,且对于n>1有d**n是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数N
(<105),请计算不超过N
的满足猜想的素数对的个数。
输入格式:
输入在一行给出正整数N
。
输出格式:
在一行中输出不超过N
的满足猜想的素数对的个数。
输入样例:
20
输出样例:
4
2. 题目分析
素数定义:在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
要求素数对,首先要求出<=N的全部素数,并把它放到一个list中。
所以自然而然想到要写出一个算法,判断一个数是否是素数
根据上面的流程,我们将其可以翻译成代码。
def isPrime(n):if n == 1:return Falseend = int(math.sqrt(n))for i in range(2, end+1):if n % i == 0:return Falsereturn True
但是这样写算法的运行效率非常慢。
这一题,限制的总耗时是200ms。
虽然上面的代码处理完全正确 , 但是最后一个测试点,直接运行超时,自然拿不到满分。
所以我们要设计运算速度更快的判断素数算法。
2,3,5,7,11,13,17,19,23
观察上面的数字,可以看出所有>6的素数,都可以采用 6k-1 或者 6k+1 的形式表示。(k>=1)
所以就设计出了算法2
def isprime(n):if n == 2 or n == 3:return Trueif n % 2 == 0 or n % 3 == 0:return Falsefor k in range(6,int(math.sqrt(n)) + 2, 6):# range取值 [6,12,18,...]if n % (k-1) == 0 or n % (k+1) == 0:return Falsereturn True
3. AC代码
import mathdef isPrime(n):
# if n == 1:
# return False
# end = int(math.sqrt(n))
# for i in range(2, end+1):
# if n % i == 0:
# return False
# return Trueif n == 2 or n == 3:return Trueif n % 2 == 0 or n % 3 == 0:return Falsefor k in range(6,int(math.sqrt(n)) + 2, 6):if n % (k-1) == 0 or n % (k+1) == 0:return Falsereturn Truen = int(input())
l = [i for i in range(2, n+1) if isPrime(i)]count = 0for index, element in enumerate(l):if index < len(l)-1:if l[index+1]-l[index] == 2:count += 1print(count)
【Python】PAT-1007-素数对猜想相关推荐
- 【PAT】1007. 素数对猜想 (20)
1007. 素数对猜想 (20) 让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数.显然有 d1=1 且对于n>1有 dn 是偶数."素数对猜想" ...
- PAT-B 1007.素数对猜想
1007. 素数对猜想 让我们定义 $d_n$ 为:$d_n = p_{n+1} - p_n$,其中 pi 是第i个素数.显然有 d1=1 且对于n>1有 $d_n$ 是偶数."素数对 ...
- 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 素数对猜想(C语言)
1007 素数对猜想 (20 分) 让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数.显然有 d1=1 且对于n>1有 dn 是偶数 ,给定任意正整数N(<10 ...
- 1007 素数对猜想 (20 分)
1007 素数对猜想 (20 分) 让我们定义dn为:dn=pn+1−pn,其中pi是第i个素数.显然有d1=1,且对于n>1有dn是偶数."素数对猜想"认为"存在 ...
- 1007 素数对猜想 (20分)(C语言)
1007 素数对猜想 (20分) 让我们定义d n 为:d n =p n+1 −p n ,其中p i 是第i个素数.显然有d 1 =1,且对于n> ...
- PAT (Basic Level) Practice (中文)1007 素数对猜想 (20 分)
题目 让我们定义dn 为:dn =pn+1 −pn ,其中pi 是第i个素数.显然有d1 =1,且对于n>1有dn 是偶数."素数对猜想" ...
- pat乙级 1007 素数对猜想(C++)
题目 让我们定义dn为:dn =pn+1 −pn ,其中pi 是第i个素数.显然有d1 =1,且对于n>1有dn 是偶数."素数对猜想"认为"存在 ...
- [PAT乙级]1007 素数对猜想
让我们定义dn为:dn=pn+1−pn,其中pi是第i个素数.显然有d1=1,且对于n>1有dn是偶数."素数对猜想"认为" ...
最新文章
- 编写100多行的c语言程序,C语言编程100多例.doc
- STL——vector
- 商汤作价1026亿IPO,商业化汤教授身家220亿
- ftp 断点续传 Android,Android使用FTP实现断点续传
- Django model 字段类型及选项解析(一)
- Crystal Report 2008
- 专访Docker大牛:说服传统应用程序使用者是Docker面临的最大难题
- 阻滞增长模型求解_种群增长模型
- 该如何缓解网卡的普遍问题?
- 发现一个bug如何定位是前端还是后台问题?
- 如何使用代理服务器更新系统_iPhone如何屏蔽iOS系统更新支持iOS12 iOS13
- 项目管理需要具备什么能力?
- c语言非递归方式建立二叉链表,非递归算法遍历二叉树,改成用链表的怎么破?链表不熟智商拙计...
- 轻松学会分布式事务算法
- 双稳态电路的两个稳定状态是什么_555时基电路内部结构及其工作原理
- 根据机器码实现软件注册
- 数字化转型,有你有我
- 自写网络验证,支持注册 充值 在线消息 自动更新
- Spring Boot集成支付宝电脑网站支付功能
- 助力品牌洞察——消费者情绪行为分析
热门文章
- Visual Studio原生开发的20条调试技巧
- 线程函数的设计以及MsgWaitForMultipleObjects函数的使用要点
- python图片分析中央气象台降水量预报_php采集自中央气象台范围覆盖全国的天气预报代码实例...
- linux系统让一个命令在后台运行,Linux——Linux后台运行命令详述
- mysql占位符 防注入_PyMySQL防止SQL注入
- vb.net2019-播放声音(wav、mp3等)
- 【Python基础】入门Pandas不可不知的技巧
- 【机器学习】使用集成学习回归器改善预测模型的得分
- 分享AI有道干货 | 126 篇 AI 原创文章精选(ML、DL、资源、教程)
- 互联网1分钟 | 0327 华为P30系列发布;微信公号直播工具大范围开放内测资格