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)

德巴赫猜想python_哥德巴赫猜想问题基于Python的验证方法研究相关推荐

  1. XDOJ-歌德巴赫猜想-35

    来源: 西安电子科技大学XDOJ在线C语言编程练习题35 问题描述: 德巴赫猜想: 任意一个大偶数都能分解为两个素数的和, 对与输入的一个正偶数,写一个程序来验证歌德巴赫猜想. 由于每个正偶数可能分解 ...

  2. 哥德巴赫猜想c语言 思路,01-哥德巴赫猜想(Goldbach's Conjecture)--(C语言)

    goldbach-partitions-of-the-even.png 前言 哥德巴赫猜想是(Goldbach's Conjecture)是数论中存在最久的未解问题之一,是一个伟大的世界性的数学猜想, ...

  3. 【东方博宜】【基础】1878--哥德巴赫猜想

    题目描述 1742年6月7日哥德巴赫写信给当时的大数学家欧拉,正式提出了以下的猜想:任何一个大于9的奇数都可以表示成3个质数之和.质数是指除了1和本身之外没有其他约数的数,如2和11都是质数,而6不是 ...

  4. 【东方博宜】【基础】1273--哥德巴赫猜想的所有解

    题目描述 求出哥德巴赫猜想的所有解(将一个大于9的奇数拆分成三个素数之和),并按从小到大的顺序写出. 输入 一行,一个大于9的奇数. 输出 第一行,一个整数N,表示解的总数. 第2-N+1行,每行一个 ...

  5. java哥验证德巴赫猜想,C语言验证哥德巴赫猜想

    你好,用几个Sample Input试了一下你提供的代码,都可以得出一组正确答案,代码的问题在于不能输出全部符合猜想的数字组合,下面做出说明: #include #include int main( ...

  6. python德巴赫猜想_python实现哥德巴赫猜想(任何大于或者等于6的整数都可以写成2个素数之和)...

    1.要求 1.1 从键盘上输入整数你n(n>=6).检验6-n之间的所有偶数 2.2 若检验成功则输出6=3+3,即一个偶数写成2个素数之和的形式(注意:只输出一种满足要求的情况即可,切前一个数 ...

  7. C/C++程序训练6---歌德巴赫猜想的证明_JAVA

    Description 验证"每个不小于6的偶数都是两个素数之和",输入一个不小于6的偶数n,找出两个素数,使它们的和为n. Input 输入一个不小于6的偶数n. Output ...

  8. c语言哥德巴赫数学猜想,哥德巴赫数学猜想“1+1”是怎么回事,你知道吗?丨2018/10/20...

    每天写一篇日记,雷打不动 2018年10月20日星期六,上午晴下午阴 [目  录]  何雷西奥日记 今天有点小确幸,在不经意中让我遇见了著名的哥德巴赫猜想. 然后,又让我搞明白了这个数学猜想的基本内容 ...

  9. 《他们创造了数学》——哥德巴赫 演讲稿

    <他们创造了数学>--哥德巴赫 演讲稿 亲爱的同学们,敬爱的老师们,大家早上中午晚上好: 我是初2025-5班的oyyl. 我演讲的主题是<他们创造了数学>-- 哥德巴赫. 当 ...

最新文章

  1. if...else 小练习
  2. Java的Locale类
  3. 读盘写盘计算机里面的意义,什么叫计算机里的写盘
  4. SpringBoot最佳实践-dev-tools
  5. [css] 如何设置背景图片不随着文本内容的滚动而滚动?
  6. java arraylist范围_Java常见集合之ArrayList深入分析
  7. mysql typedefinition_深入浅出Mysql——基础篇
  8. linux网络安装gtk2,(一) linux 下gtk2,python的安装
  9. Ubuntu16.04系统 GPU1070Ti下搭建Caffe++Nvidia显卡驱动+Cuda9.0+Cudnn7.0.5
  10. vue 个人头像修改
  11. 思维挑战6:奔跑的小人
  12. pth转onnx:RuntimeError: Exporting the operator uniform to ONNX opset version 9 is not supported.
  13. c语言200以内能被3和5整除的数,程式设计程式 求500以内能被3和5同时整除的所有数的和,c语言程式码写全一点,谢谢啦...
  14. 低代码开发之开源数据可视化分析平台datagear
  15. ecshop后台getshell
  16. 分治算法 求第k小元素 O(n) O(nlog2^n)
  17. SpringSecurity之SecurityContext和Authentication对象
  18. 感悟:学习做人的道理
  19. AI TIME 祝清华大学111周年生日快乐!
  20. Mac宝藏软件推荐(笔者也在用)(二)

热门文章

  1. CVE-2020-1472: NetLogon特权提升漏洞通告
  2. ppt模板如何制作动画展示效果?
  3. 6.0无法一键root吗,root一键root
  4. 计算机毕设Python+Vue音乐鉴赏网站前端开发(程序+LW+部署)
  5. Bootstrap CSS Layout (1) - Breakpoint
  6. Combining Visual Cues with Interactions for 3D–2D Registration in Liver Laparoscopy翻译
  7. C/C++编译总结 (Linux下g++、makefile、automake)
  8. 自然语言处理中的Character Embedding技术
  9. WMS系统(一)成品出库
  10. Field II 超声声场仿真(3): 脉冲-回波响应(原理代码)