文档章节

孪生素数

寂寞暴走伤
 寂寞暴走伤
发布于 2016/07/14 19:32
字数 397
阅读 7
收藏 0

问题描述:

若两个素数之差为2,则这两个素数就是孪生素数。
编写程序找出1~100之间的所有孪生素数。


我的代码:

import math
def prime(n):
    count=0
    for  i in range(2,int(math.sqrt(n))+1):
        if n%i==0:
            count=1
        i+=1
    if count==1:
        return None
    else:
        return True
a=[]
for j in range(2,100):
    if prime(j)==True:
        a.append(j)

for k in range(len(a)-1):
    if a[k]+2==a[k+1]:
        print a[k],a[k+1]


结果:

[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]


3 5

5 7

11 13

17 19

29 31

41 43

59 61

71 73


我的思路:

先求出100以内的素数,上次已经做过了(http://jmbzs.blog.51cto.com/9449309/1790973),

而且一个素数的孪生素数必然是在其左右的,所以判断是否满足a[k]+2==a[k+1]关系,满足的两素数即为孪生素数,注意,此时的循环范围为len(a)-1,如果是a[k-1]+2=a[k]的话,那么for循环就应为range(1,len(a));


示例代码:

#筛法找素数: 
# 1. 建立一张表,用True,False标识一个数是否是素数。
# 2. 找到一个素数p,然后把p的倍数都标记成非素数。
# 3. 查表检测p + 1, 如果非素数检测下一个, 是素数执行1的操作

pt = [True] * 100
res = []
for p in range(2, 100):
    if not pt[p]: continue
    res.append(p)
    for i in range(p * p, 100, p):
        pt[i] = False
for i in range(1, len(res)):
    if res[i] - res[i-1] == 2:
        print res[i-1], res[i]


题目出处:http://www.cheemoedu.com/exercise/20

© 著作权归作者所有

共有 人打赏支持
上一篇: 梅森尼数
下一篇: 杨辉三角
寂寞暴走伤
粉丝 0
博文 40
码字总数 20969
作品 0
南阳
运维
私信 提问
高等数学Mathematica实验题——孪生素数的输出(Output of Twin Prime Numbers)

n = 10000;f = {}; For[i = 1, Prime[i] < n, i++,If[Prime[i + 1] == Prime[i] + 2,f = Append[f, {Prime[i], Prime[i + 1]}]]];f...

hpdlzu80100
2018/05/04
0
0
通过完全因子数构造素数,素数的规律找到了!

这篇文字表述了如何通过规律构造素数。这是素数研究的终极目标。证明很直接,我检查了无数遍认为没错。这篇文章只发到简书和我新注册的维信公众号(好香 greattasty)。我同时也会把一个英文...

好香帅
2017/11/12
0
0
Java-第十四章-带参的方法(二)-编写程序,判断是否为素数.并根据判断结果输出语句

素数 即 质数 。 质数(prime number)又称素数,有无限个。一个大于1的自然数,如果除了1和它本身外,不能被其他自然数整除(除0以外)的数称之为素数(质数);否则称为合数。根据算术基本...

Y幕徐
2014/06/17
0
0
Google恶搞苹果微软几大财团

Google参与竞拍了北电的6,000多项专利,它的出价数额让其他竞争者大惑不解,但让数学爱好者们津津乐道。Google的第一次出价是1,902,160,540美元——出自与孪生素数倒数之后收敛有关的布朗常数...

小卒过河
2011/07/03
3.3K
18
Azure Iot Android 开发-MQTT协议通信(设备和IoT 实时通信)2-设备孪生详解

之前简单讲解了IotHub 使用,现在详解DeviceTwin,看文章之前先了解Azure Iot Android 开发-MQTT协议通信(设备和IoT 实时通信)1 设备孪生 设备孪生存储具有以下用途的设备相关信息: 设备和...

流水潺湲
2018/05/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Confluence 6 升级中的一些常见问题

升级的时候遇到了问题了吗? 如果你想尝试重新进行升级的话,你需要首先重新恢复老的备份。不要尝试再次对 Confluence 进行升级或者在升级失败后重新启动老的 Confluence。 在升级过程中的一...

honeymoose
47分钟前
2
0
C++随笔(四)Nuget打包

首先把自己编译好的包全部准备到一个文件夹 像这样 接下来新建一个文本文档,后缀名叫.nuspec 填写内容 <?xml version="1.0"?><package xmlns="http://schemas.microsoft.com/packaging/201......

Pulsar-V
今天
2
0
再谈使用开源软件搭建数据分析平台

三年前,我写了这篇博客使用开源软件快速搭建数据分析平台, 当时收到了许多的反馈,有50个点赞和300+的收藏。到现在我还能收到一些关于dataplay2的问题。在过去的三年,开源社区和新技术的发...

naughty
今天
3
0
Python3的日期和时间

python 中处理日期时间数据通常使用datetime和time库 因为这两个库中的一些功能有些重复,所以,首先我们来比较一下这两个库的区别,这可以帮助我们在适当的情况下时候合适的库。 在Python文...

编程老陆
今天
2
0
分布式面试整理

并发和并行 并行是两个任务同时进行,而并发呢,则是一会做一个任务一会又切换做另一个任务。 临界区 临界区用来表示一种公共资源或者说是共享数据,可以被多个线程使用,但是每一次,只能有...

群星纪元
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部