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-素数对猜想相关推荐

  1. 【PAT】1007. 素数对猜想 (20)

    1007. 素数对猜想 (20) 让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数.显然有 d1=1 且对于n>1有 dn 是偶数."素数对猜想" ...

  2. PAT-B 1007.素数对猜想

    1007. 素数对猜想 让我们定义 $d_n$ 为:$d_n = p_{n+1} - p_n$,其中 pi 是第i个素数.显然有 d1=1 且对于n>1有 $d_n$ 是偶数."素数对 ...

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

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

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

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

  5. 1007 素数对猜想(C语言)

    1007 素数对猜想 (20 分) 让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数.显然有 d1=1 且对于n>1有 dn 是偶数 ,给定任意正整数N(<10 ...

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

    1007 素数对猜想 (20 分) 让我们定义dn为:dn=pn+1−pn,其中pi是第i个素数.显然有d1=1,且对于n>1有dn是偶数."素数对猜想"认为"存在 ...

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

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

  8. PAT (Basic Level) Practice (中文)1007 素数对猜想 (20 分)

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

  9. pat乙级 1007 素数对猜想(C++)

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

  10. [PAT乙级]1007 素数对猜想

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

最新文章

  1. 编写100多行的c语言程序,C语言编程100多例.doc
  2. STL——vector
  3. 商汤作价1026亿IPO,商业化汤教授身家220亿
  4. ftp 断点续传 Android,Android使用FTP实现断点续传
  5. Django model 字段类型及选项解析(一)
  6. Crystal Report 2008
  7. 专访Docker大牛:说服传统应用程序使用者是Docker面临的最大难题
  8. 阻滞增长模型求解_种群增长模型
  9. 该如何缓解网卡的普遍问题?
  10. 发现一个bug如何定位是前端还是后台问题?
  11. 如何使用代理服务器更新系统_iPhone如何屏蔽iOS系统更新支持iOS12 iOS13
  12. 项目管理需要具备什么能力?
  13. c语言非递归方式建立二叉链表,非递归算法遍历二叉树,改成用链表的怎么破?链表不熟智商拙计...
  14. 轻松学会分布式事务算法
  15. 双稳态电路的两个稳定状态是什么_555时基电路内部结构及其工作原理
  16. 根据机器码实现软件注册
  17. 数字化转型,有你有我
  18. 自写网络验证,支持注册 充值 在线消息 自动更新
  19. Spring Boot集成支付宝电脑网站支付功能
  20. 助力品牌洞察——消费者情绪行为分析

热门文章

  1. Visual Studio原生开发的20条调试技巧
  2. 线程函数的设计以及MsgWaitForMultipleObjects函数的使用要点
  3. python图片分析中央气象台降水量预报_php采集自中央气象台范围覆盖全国的天气预报代码实例...
  4. linux系统让一个命令在后台运行,Linux——Linux后台运行命令详述
  5. mysql占位符 防注入_PyMySQL防止SQL注入
  6. vb.net2019-播放声音(wav、mp3等)
  7. 【Python基础】入门Pandas不可不知的技巧
  8. 【机器学习】使用集成学习回归器改善预测模型的得分
  9. 分享AI有道干货 | 126 篇 AI 原创文章精选(ML、DL、资源、教程)
  10. 互联网1分钟 | 0327 华为P30系列发布;微信公号直播工具大范围开放内测资格