用python证明哥德巴赫猜想证明_哥德巴赫猜想问题基于Python的验证方法研究

1、概述

Python语言[1,2]是一门面向对象的解释型高级程序设计语言,其不仅开源,而且支持命令式编程,包含丰富且易理解的标准库和扩展库,可以快速生成程序的原型,帮助开发者高效地完成任务。同时,Python语言语法简单、结构简单、可读性高,能够使编程人员专注于解决问题而不是搞明白语言本身,从而提高开发效率。

哥德巴赫猜想作为数学界中的掌上明珠,迄今为止没有学者可以证明猜想的正确性。利用Python语言对该猜想进行验证,同时给出算法步骤和具体程序。结果表明,该程序可以提高验证效率,同时便于读者更好理解这一猜想。

2、哥德巴赫猜想

2.1猜想描述

德国数学家哥德巴赫在1742年给欧拉的信中提出了这一猜想:“任何一个大于2的整数都可以写成3个素数之和”。当时最伟大的数学家欧拉也无法证明这一猜想,直到19世纪末都没有取得任何进展。今日的哥德巴赫猜想[3]被描述为欧拉的版本,即:任何一个大于2的偶数都可以写成两个素数之和。

2.2研究历史

为了对这一问题进行证明,科学家还在尝试走另外一条道路。即证明每个大偶数可以表示为:一个素因数不超过a个的数与一个素因数不超过b个的数之和,称这一命题为(a+b)。哥德巴赫猜想就是要证明命题(1+1)是正确的。

1920年,挪威数学家布朗首先证明了(9+9),此后这方面的工作不断取得进展;1957年,我国数学家王元证明了(2+3);1962年,我国数学家潘承洞证明了(1+5),同年又和王元合作证明了(1+4)。

1966年,中国数学家陈景润[4]证明了(1+2),并于1973年发表,立即轰动了国际数学界。尽管从(1+2)到(1+1)只有一步之隔,但这一步却有难以想象的艰难。许多科学家认为,要想证明(1+1),就必须创造出新的方法,以往的路都是走不通的。

3、Python语言

程序处理的对象是数据,编写程序也就是对数据的处理过程,而运算符是对数据进行处理的具体描述。限于篇幅所限,选取Python中部分运算符进行介绍:

(1)算术运算符(+、-、*、/、**、//、%),其中//表示整除运算。

(2)关系运算符(>、=、<=、==、!=)。

(3)逻辑运算符(and、or、not)。

(4)赋值运算符(=、复合赋值运算符)。

(5)位运算符(<>、~、|、^、&)。

(6)成员运算符(in、notin)。

另外,程序中具有相同性质的集合称为数据类型。Python的数据类型可以分为简单类型、序列以及其他类型。其中,简单类型包括整型、实型(浮点型)、复数类型和布尔类型,序列类型包括列表、元组和字符串,其他类型包括字典和集合。

同时,程序设计语言只是一种工具,只懂得语言的规则并不能保证编写出高质量的程序。程序设计的关键是设计算法,算法与程序设计和数据结构密切相关。算法就是解决问题的一系列操作步骤的集合,可以通过高级语言的语句来实现。通过这些语句,一方面体现了算法的思想,另一方面指示计算机按算法的思想去工作,从而解决实际问题。

一个算法所具有的特性是:有穷性、确定性、可行性、有输入、有输出、有效性。

4、算法实现

使用Python语言对哥德巴赫猜想进行验证时,需要对判断给定的数是否是素数。素数[5]的概念是:在大于1的自然数中,除1和本身外不再有其他因数的自然数。因此在程序中,isprime函数用于判断给定自然数n是否是素数,设置变量flag表示自然数n是否是素数,循环变量i的范围是2到n-1,如果在循环过程中发现n存在除1和本身之外的因子,即n%i==0,则立即退出循环,置flag为0,最后对flag进行判断,若flag值为1,则n是素数,反之则不是。

例如,输入的自然数为10,则主程序的循环变量i的范围是2到5,如果i和10-i都是素数,则证明这是一种分解结果,输出即可。

该问题的Python程序如下所示:

程序1

在上述程序的基础上,可以对一定范围内的自然数进行验证,判断哥德巴赫猜想在某一范围内是否成立。利用函数的特性,对上述程序中的哥德巴赫猜想验证问题进行封装,并在主程序中更改循环条件,函数GoldbachConjecture用于哥德巴赫猜想验证。该问题的Python程序如下所示:

程序2

5、实验

在Windows8操作系统中对上节中所给出的两个程序进行仿真实验。该实验的软件运行环境为Python3.4.2,硬件主机的配置环境为IntelCorei5-24302.4Ghz,RAM2GB。

针对第1个程序,可验证一个大于2的偶数是否符合哥德巴赫猜想,若符合,则给出所有的分解方式,若不符合,则给出相应的提示。如图1所示,当输入的偶数为30时,可得到3种分解方式。

图1程序1验证结果

针对第2个程序,可验证在一定范围内的全部偶数是否符合哥德巴赫猜想,程序的输出为验证结果。如图2所示,当输入的范围的末端值为1000时,可得到从4到1000范围内的所有偶数都符合哥德巴赫猜想。

图2程序2验证结果

6、结语

阐述了哥德巴赫猜想的定义、给出科学家对哥德巴赫猜想的研究历史,使用Python语言对哥德巴赫猜想问题进行验证,先针对具体的偶数进行验证,再对一个特定范围内的所有偶数进行验证,给出该范围内的数是否都符合哥德巴赫猜想。事实上,程序在对素数进行判断时,利用的是传统的定义法,这种方法在数字比较大时会消耗较多时间。与此同时,在对特定范围内的所有偶数进行验证时,如果给定范围较大,验证效率也会比较低。因此,在未来的研究中,将对以下几个方面进行探究:(1)对判断素数的方法进行优化,如采用“筛选法”等高效的素数判断方法;(2)在对特定范围内的所有偶数进行验证时,如果范围较大,可以采用多台机器进行分布式验证求解,以提高检测效率;(3)利用计算机语言对更多数学猜想进行验证,如“费马定理”等。

参考文献:

[1]王小银,王曙燕,孙家泽.Python语言程序设计[M].北京:清华大学出版社,2017:1-3.

[2]郭海涛,蒋琳.Python中实现地图数据可视化[J].电脑编程技巧与维护,2018,(9):105-107.

[3]张春山.关于哥德巴赫猜想的一个注记[J].大学数学,2018,34(5):19-22.

[4]李小凝.《哥德巴赫猜想》创作发表逸事———陈景润秘书的回忆[J].2019,(1):72-74.

[5]徐斌.在概念学习中提升数学素养———评陆丽萍《素数和合数》一课[J].江苏教育研究,2012,(10):36-37.

王振宇,李晓卓,谢江欢,曲凯.基于Python的哥德巴赫猜想问题验证方法[J].电脑编程技巧与维护,2020(02):17-19.

基金:西安邮电大学创新基金项目(CX2016-07)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值