本系列旨在通过一系列由浅入深的python实战代码或项目,使普通人也能感受到编程的乐趣,编程能够在平时的工作生活上有所帮助。欢迎查看系列的开篇词和前面文章。
这是本系列的第三篇文章,使用python来验证大名鼎鼎的哥德巴赫猜想。
哥德巴赫猜想
哥德巴赫1742年在给欧拉的信中提出了一个猜想 。但是哥德巴赫自己无法证明它,于是就写信请教赫赫有名的大数学家欧拉帮忙证明,但是一直到死,欧拉也无法证明,故该猜想被命名为 哥德巴赫猜想。
今日常见的猜想陈述为欧拉的版本,即任何大于2的偶数都能够写成两个质数相加的形式,类似于4=2+2(2是最小的质数),8=3+5。
因为质数没有什么规律性,所以该猜想一直未被完全证明。我国著名数学家陈景润证明了大偶数可以表示为1个质数和不超过2个质数乘积之和的形式,即1+2,这是距离哥德巴赫猜想最近的成果。
求解思路
本质使用穷举法
-
先是要验证一个正整数是否为质数,
-
如果一个大于2的偶数减去一个质数的结果仍然为质数,则满足猜想。
-
遍历4到某个数,如果都能打印出有两个质数相加的形式,则证明了4到这个数之间的哥德巴赫猜想。
受制于电脑的计算能力和计算时间,遍历区间不会太大,实际上现在用穷举的方法已经证明的很大的数的哥德巴赫猜想。
代码实现
def isprime(n): # 定义函数,检验一个数是否为质数,
i = 2
while (i < n):
if n % i == 0: # 除以2到其本身-1,除的尽说明不是质数,返回false
return False
i += 1
return True
def GDsolve(n): # 定义函数,判断一个数是否满足哥巴德赫猜想
for i in range(2, n): # 遍历2到这个数本身,看是否满足两个质数相加等于它,如果满足返回true
if isprime(i):
if isprime(n - i): # 两个if判断i和n-i是否都为质数,如果为真的话,则该数符合哥德巴赫猜想
print(n,'写成两个质数相加的形式是:',n, '=', i, '+', n - i) # 输出i最早满足哥德巴赫的结果
return True
return False
# 输出某个大于2的偶数的哥德巴赫形式
GDsolve(100000)
# 遍历从i到10000这个数段中偶数的哥巴德赫形式,想从最早开始验证则i取4
i = 9990
while (GDsolve(i) and i < 10000):
i += 2
输出结果
100000 写成两个质数相加的形式是: 100000 = 11 + 99989
9990 写成两个质数相加的形式是: 9990 = 17 + 9973
9992 写成两个质数相加的形式是: 9992 = 19 + 9973
9994 写成两个质数相加的形式是: 9994 = 53 + 9941
9996 写成两个质数相加的形式是: 9996 = 23 + 9973
9998 写成两个质数相加的形式是: 9998 = 31 + 9967
10000 写成两个质数相加的形式是: 10000 = 59 + 9941
点赞收藏,及时接收更新。
评论区