我的编程空间,编程开发者的网络收藏夹
学习永远不晚

利用Python对哥德巴赫猜想进行检验和推理

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

利用Python对哥德巴赫猜想进行检验和推理

一、前言

写一篇优质一点的文章吧。

数学是一个奇妙的东西,对此,也衍生出了许多的悖论与猜想,例如整活(3)的生日悖论。

其实,这样的悖论和猜想还有很多很多。

这篇文章会对哥德巴赫猜想用编程语言进行检验和推理。

二、猜想简介

哥德巴赫猜想,偶数猜想内容为:任何一个大于4的偶数都可以表示成两个质数的和。

例如:4=2+2,6=3+3,8=3+5,10=5+5等等。

还有一个奇数的猜想,内容为:任意一个大于7的奇数都可以表示成三个质数的和。

例如:9=3+3+3,23=7+11+5,49=19+19+11,59=23+23+13等等。

要证明他是不容易的。我们以偶数猜想为例,问题迂回一下,“每一个大偶数可以表示成为一个素因子个数不超过a个的数与另一个素因子不超过b个的数之和”,我们暂且记作a+b,哥德巴赫猜想就是要证明1+1成立。

这个猜想有很多延伸版本:

9+9,7+7,6+6,5+7,4+9,3+15,2+366,5+5,4+4,1+c,3+4,3+3,2+3,1+5,1+4,1+3,1+2,s+t等等,这些已经被证明了。

1+2由陈景润证明,被称为陈氏定理。

但是1+1仍然没有证明。

三、偶数猜想

1.是否符合哥德巴赫猜想

这里,我们先计算一下1+1。

思路:

第一步:首先做一个寻找质数的程序,保存到列表zhishu里面。

第二步:设置变量shu为4,之后死循环,再套两个for循环遍历zhishu列表,如果两个数相加的和为shu则退出循环,shu+=2,再次重新执行。

第三步:如果外层的for循环遍历结束之后还是没有找到则提醒这个数违反哥德巴赫猜想,之后堵塞。

第四步:python计算较久,给个安慰进度。

代码如下:

shu=4#初始化变量:shu
zhishu=[]#保存质数的列表
 
while 1:#死循环便于except语句重新
    try:#异常捕获
        a=int(input("质数的最大值?"))#询问质数的最大值
        if a>=10000:#过大提示
            print("您所填的数有点大,请耐心等待侦测")#给个心理准备
        if a<251:#填的数过小
            print("这么小?你没事吧")#提示
            raise(ValueError())#强制报错
        break#没有错误则退出循环
    except:#如果异常
        print("重新填")#提示
#质数检测
for i in range(2,a):#循环检测每一个数是不是质数
    for j in range(2,i-1):#循环检测这个数有没有其他因数
        if i%j==0:#如果有
            break#退出循环,直接下一个数
    else:#如果循环为正常结束就是这是一个质数
        zhishu.append(i)#列表zhishu添加
#开始检测违反哥德巴赫猜想的数
while 1:#死循环检测
    for i in zhishu:#第一个加数
        for j in zhishu:#第二个加数
            if i+j==shu:#两个加数和为shu则是符合哥德巴赫猜想
                break#退出循环
        if i+j==shu:#在检测一遍来退出前面的循环
            break#退出循环
    else:#如果是正常结束的循环就是违反哥德巴赫猜想
        print(shu,"愣着干啥?申请专利啊!")#直接申请专利好吧
        break#退出循环到堵塞地带
    shu+=2#shu自增2,保持他是偶数
    if shu%500==0:#安慰进度
        print(shu,"以内没有")#提醒
    if shu>a:#到了这里可能出现误判所以退出
        print("检测到头了!")#提示
        break#退出循环
while True:#堵塞地带
    a=input("请退出程序")#input堵塞

具体的详细解释请看注释。

这就是简单的哥德巴赫猜想检验程序。不过因为python的程序慢死了,所以,我们可以用C++。

2.输入偶数,输出两个质数

我们试着让用户输入一个偶数,输出这个偶数变成两个质数的和的结果。

这样的程序更简单了一点。

思路:

第一步:还是寻找所有质数保存到zhishu列表里面。

第二步:获取用户输入(try语句排除错误)及侦测是否是偶数,否则抛出异常让except接受并输出:“请检查输入是否为数字且为偶数。”

第三步:两层for遍历质数,如果和为这个数则输出并跳出。

第四步:完善异常捕捉和不符合哥德巴赫猜想。

zhishu=[]#储存质数的列表
for i in range(2,10000):#循环检测质数
    for j in range(2,i-1):#2到i内的每一个数
        if i%j==0:#如果i不是质数
            break#退出循环
    else:#如果正常结束循环就是i是质数
        zhishu.append(i)#zhishu添加i
 
while 1:#死循环输入输出
    try:#异常捕获
        shu=int(input("请输入数字"))#获取数
        if shu>10000 or shu<4 or shu%2==1:#必须是4到10000内的偶数
            print("这个数必须是4到10000以内的偶数!")#提示
            continue#重新开始循环
        for i in zhishu:#遍历第一个加数
            for j in zhishu:#遍历第二个加数
                if i+j==shu:#如果成立
                    print(f"{i}+{j}={shu}")#输出
                    break#跳出循环
            if i+j==shu:#再次判断
                break#再次跳出循环
        else:#如果这个数不符合哥德巴赫猜想
            print(shu,"申请专利去!")#提示
    except:#如果异常
        print("请输入正确")#提示

思路还是看注释。这种方法就弥补了python的运行速度慢,和C++比起来差913个(1坤个)德芙的缺点。

四、奇数猜想

1.检测是否符合

接下来,我们检测奇数猜想是否成立。

思路:

第一步:初始化变量,获取用户的检测范围。

第二步:找到质数保存到zhishu列表里面。

第三步:四层循环,一层while三层for持续检测。

第四步:如果等式成立,一步一步break退出循环。

第五步:循环退出后shu自己加二,完善不符合哥德巴赫猜想的情况。

zhishu=[]#储存质数的列表
shu=7#初始化变量shu
 
while 1:
    try:
        a=int(input("输入循环次数,越大可纠察数越多但是速度越慢"))
        if a<1000 or a>20000:
            raise(valueError())
        break
    except:
        print("请正确输入")
        print("填写的数最好在1000到20000之间")
for i in range(2,a):#循环检测质数
    for j in range(2,i-1):#2到i内的每一个数
        if i%j==0:#如果i不是质数
            break#退出循环
    else:#如果正常结束循环就是i是质数
        zhishu.append(i)#zhishu添加i
 
while shu<a:#死循环输出
    for i in zhishu:#第一层循环,i为第一个数
        for j in zhishu:#第二层循环,j为第二个数
            for k in zhishu:#第三层循环,k为第三个数
                if i+j*k==shu:#如果公式成立
                    print(i,"+",j,"*",k,"=",shu)#输出
                    break#退出循环
            if i+j*k==shu:#如果等式成立
                break#再次退出循环
        if i+j*k==shu:#如果等式成立
            break#再再再次退出循环
    else:#如果循环正常结束,就是不符合哥德巴赫猜想
        print(shu,"申请专利去啊!")#提示
        break#退出大循环
    shu+=2#shu加2
print("结束")#退出大循环后提示

思路还还还是看注释。

2.给出一数返回三数

接下来,还是尝试一下用户给出一个奇数,返回他的三个质数之和的形式。

思路:

第一步:在偶数哥德巴赫猜想的基础上多加一层循环。

第二步:退出循环也多加一个。

第三步:判断条件和输出改变一下。

zhishu=[]#储存质数的列表
for i in range(2,10000):#循环检测质数
    for j in range(2,i-1):#2到i内的每一个数
        if i%j==0:#如果i不是质数
            break#退出循环
    else:#如果正常结束循环就是i是质数
        zhishu.append(i)#zhishu添加i
 
while 1:#死循环输入输出
    try:#异常捕获
        shu=int(input("请输入数字"))#获取数
        if shu>10000 or shu<7 or shu%2==0:#必须是4到10000内的偶数
            print("这个数必须是7到10000以内的奇数!")#提示
            continue#重新开始循环
        for i in zhishu:#遍历第一个加数
            for j in zhishu:#遍历第二个加数
                for k in zhishu:#遍历第三个加数
                    if i+j+k==shu:#如果成立
                        print(f"{i}+{j}+{k}={shu}")#输出
                        break#跳出循环
                if i+j+k==shu:#再次判断
                    break#再次跳出循环
            if i+j+k==shu:#再再再次判断
                break#再再再次跳出循环
        else:#如果这个数不符合哥德巴赫猜想
            print(shu,"申请专利去!")#提示
    except:#如果异常
        print("请输入正确")#提示

与其说是自己写,不如说是将一个程序升级改变的练手程序,将偶数哥德巴赫猜想的程序升级成奇数哥德巴赫猜想。

到此这篇关于利用Python对哥德巴赫猜想进行检验和推理的文章就介绍到这了,更多相关Python哥德巴赫猜想内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

利用Python对哥德巴赫猜想进行检验和推理

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

利用Python对哥德巴赫猜想进行检验和推理

数学是一个奇妙的东西,对此,也衍生出了许多的悖论与猜想。这篇文章会对哥德巴赫猜想用编程语言进行检验和推理,感兴趣的小伙伴可以跟随小编一起学习一下
2022-12-08

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录