什么是孪生素数?
所谓孪生素数指的是间隔为2的两个相邻素数,因为它们之间的距离已经近得不能再近了,如同孪生兄弟一样,故将这一对素数称为孪生素数。
我们可以写出3~100以内的孪生素数,一共有8对,分别是(3,5),(5,7),(11,13),(17,19),(29,31),(41,43),(59,61)和(71,73)。随着数字的增大,孪生素数的分布也越来越稀疏,人工寻找孪生素数变得非常困难。
有个著名的猜想——孪生素数猜想,即孪生素数是否有无穷多对,这是数论中还有待解决的一个重要问题。此处我们只讨论在有限范围内的孪生素数求解问题。
那么问题来了:求出3~1000以内的所有孪生素数。
下面直接上代码:
########################
import math
def sushu(n):#判断n是否为素数
k = math.sqrt(n) + 1
i = 2
while i <= k:
if n % i == 0:
return 0 # n能被i整除,不是素数,返回0
i += 1
return 1 # n是素数,返回1
if __name__=="__main__":
count = 0 # 计数器
print("3到1000之间的孪生素数:")
for i in range(3, 1000):
if sushu(i) and sushu(i+2):
print("(%-3d, %3d) " %(i, i+2), end="")
count += 1
if count % 8 == 0:# 每8个数换一行
print()
print("\n1000以内的孪生素数共有%d对" %count)
########################
执行结果如下:
3到1000之间的孪生素数:
(3 , 5) (5 , 7) (11 , 13) (17 , 19) (29 , 31) (41 , 43) (59 , 61) (71 , 73)
(101, 103) (107, 109) (137, 139) (149, 151) (179, 181) (191, 193) (197, 199) (227, 229)
(239, 241) (269, 271) (281, 283) (311, 313) (347, 349) (419, 421) (431, 433) (461, 463)
(521, 523) (569, 571) (599, 601) (617, 619) (641, 643) (659, 661) (809, 811) (821, 823)
(827, 829) (857, 859) (881, 883)
1000以内的孪生素数共有35对
________________END______________
网友评论