哥德巴赫猜想的Python验证_第1页
哥德巴赫猜想的Python验证_第2页
哥德巴赫猜想的Python验证_第3页
哥德巴赫猜想的Python验证_第4页
哥德巴赫猜想的Python验证_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文格式为Word版,下载可任意编辑—6—哥德巴赫猜想的Python验证

王德贵丁大为

哥德巴赫猜想,是世界近代三大数学难题之一。华罗庚是中国最早从事哥德巴赫猜想的数学家。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。

五、测试与改进

1.测试解的个数

我们前面的程序,只显示了一组解。其实,输入任意一个不小于4的偶数,都至少能表示为一对质数之和,输入任意一个不小于7的奇数,都至少有一组能表示为三个质数之和,假如想全部算式都显示出来,只要删除程序中“break〞相关的语句即可。

譬如,“关于偶数的哥德巴赫猜想〞,修改程序如图7。

运行结果如下,这里进行了去重(图8)。

“关于奇数的哥德巴赫猜想〞,修改程序如下,运行后发现满足条件的解好多,但却是有重复的(图9)。

输入23,得到21组解,那如何去重呢?大家利用列表或集合都可以实现,这里不再赘述(圖10)。

2.验证是否包括所有整数

所有偶数和奇数,我们不能一一验证,那么在一定范围内,是否包括所有值呢?我们来验证一下。

(1)验证一定范围内所有偶数

将一定范围内的质数存入列表,然后遍历列表求和,假如和的所有值,包含了所有偶数,则说明任意偶数都可以表示为两个质数的和。

程序中,运用集合去重和做差,检验是否包含所有偶数。

50范围内的验证,同样只显示了一组解(图11)。

(2)验证一定范围内所有奇数

将一定范围内的质数存入列表,然后遍历列表求和,假如和的所有值,包含了所有奇数,则说明任意奇数都可以表示为三个质数的和。

程序中,同样运用集合去重和做差,检验是否包含所有奇数。

50范围内的验证,同样只显示了一组解(图12)。

通过测试,在一定范围内,均得到了验证,但数值过大时,用时较长。当然我们要证明一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论