哥德巴赫猜想的Python验证
2021-08-11王德贵丁大为
王德贵 丁大为
哥德巴赫猜想,是世界近代三大数学难题之一。华罗庚是中国最早从事哥德巴赫猜想的数学家。1936—1938年,他赴英留学,师从哈代研究数论,并开始研究哥德巴赫猜想,验证了几乎所有的偶数猜想。1966年,华罗庚的学生陈景润在对筛法做了新的重要改进后,证明了“1+2”,他证明了任何一个充分大的偶数,都可以表示为两个数之和,其中一个是质数,另一个或为质数或为两个质数的乘积,被称为“陈氏定理”,这在当时影响很大,但之后就再也没有什么研究进展了。
一、哥德巴赫猜想内容
哥德巴赫猜想,是数学史上和质数有关的数学猜想,影响了一代又一代数学家。
1742年6月7日,德国数学家哥德巴赫在写给著名数学家欧拉的一封信中,提出了一个大胆的猜想:任何不小于3的奇数,都可以是三个质数之和(如:7=2+2+3。当时1仍属于质数)。
同年,6月30日,欧拉在回信中提出了另一个版本的哥德巴赫猜想:任何偶数,都可以是两个质数之和(如:4=2+2。当时1仍属于质数)。
这就是数学史上著名的“哥德巴赫猜想”。由于1已经不归为质数,所以这两个猜想分别变为:
任何不小于7的奇数,都可以写成三个质数之和的形式;
任何不小于4的偶数,都可以写成两个质数之和的形式。
20世纪,随着计算机技术的发展,数学家们发现哥德巴赫猜想对于更大的数依然成立。但自然数是无限的,无法判断是否存在某一个足够大的偶数,成为哥德巴赫猜想的反例,但数学家们仍在不断的探索中,寻求着各种不同的解决方法。
如果想了解更深入的知识,大家可以参考相关资料。今天我们只利用Python做基本验证。
二、创意来源
在Python学习过程中,尝试解决一些问题,特别是世界数学难题,不仅是一种乐趣,同时也能学到数学知识,了解一些数学发展历史,也可以提高学生的学习兴趣和学习积极性,更能加深理解程序的优化与调试。
三、设计思路
“关于偶数的哥德巴赫猜想”,我们可以将要分析的任一正整数减去一个质数,然后看看结果是不是也为质数,这是一种方法;还有一种方法就是遍历质数,看看有没有符合条件的两个质数。
“关于奇数的哥德巴赫猜想”,我们可以将要分析的任一正整数减去一个质数,然后看看结果是不是也为质数,这是一种方法;还有一种方法就是遍历质数,看看有没有符合条件的三个质数。
这几种方法的基础都需要把正整数范围内的质数先求出来。我们用列表形式将质数存储,计算和访问很方便。
四、Python验证
1.关于偶数的哥德巴赫猜想
任何不小于4的偶数,都可以写成两个质数之和的形式。
这个猜想的理解是,4=2+2,6=3+3,8=3+5,10=3+
7,12=5+7……有无数个,我们无法一一列举,通过编程也只能验证有限范围,否则运行时间将无限延长。
(1)方法一:遍历质数列表,取出两个质数验证
程序有两部分,一是建立质数列表,二是在列表中确定有没有满足条件的质数。有一组则程序结束,并显示出来(图1)。
也可以利用自定义函数,程序如图2。
要求出不小于这个偶数范围内的质数,于是把质数获取做了自定义函数,利用列表把质数列举出来,然后便于下一步计算和验证。
输入不小于4的偶数后,调用自定义函数,把这个范围内的质数放在列表里,然后利用枚举算法,在列表中取两个数,验证是否等于输入的偶数,如果等于偶数,即输出。
这两个程序运行结果是完全一样的,它们都是在质数列表里任意取两个数,验证其和是不是等于输入的偶数。
(2)方法二:判断偶数与质数的差是否为质数
这种方法减小了时间复杂度,运行速度更快,程序如图3。
測试结果如图4。
2.关于奇数的哥德巴赫猜想
任何不小于7的奇数,都可以写成三个质数之和的形式。
根据前面的验证,修改程序,便可以验证“关于奇数数的哥德巴赫猜想”。即多加一重for循环,同时判断输入数与两个质数之差是否也为质数,如果是,则输出算式,程序结束(图5)。
验证结果如图6。