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

 更新时间:2022年12月07日 15:10:00   作者:¿¿¿¡¡¡  
数学是一个奇妙的东西,对此,也衍生出了许多的悖论与猜想。这篇文章会对哥德巴赫猜想用编程语言进行检验和推理,感兴趣的小伙伴可以跟随小编一起学习一下

一、前言

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

数学是一个奇妙的东西,对此,也衍生出了许多的悖论与猜想,例如整活(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哥德巴赫猜想内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python反射用法实例简析

    Python反射用法实例简析

    这篇文章主要介绍了Python反射用法,结合实例形式简单分析了Python反射的概念、原理及使用方法,需要的朋友可以参考下
    2017-12-12
  • Flask框架配置与调试操作示例

    Flask框架配置与调试操作示例

    这篇文章主要介绍了Flask框架配置与调试操作,结合实例形式简单分析了flask框架配置管理与调试模式简单操作技巧,需要的朋友可以参考下
    2018-07-07
  • python实现与arduino的串口通信的示例代码

    python实现与arduino的串口通信的示例代码

    本文主要介绍了python实现与arduino的串口通信的示例代码, 在Python中,我们可以使用pyserial库来实现与Arduino的串口通信,下面就来介绍一下如何使用,感兴趣的可以了解一下
    2024-01-01
  • Python调用JavaScript代码的方法

    Python调用JavaScript代码的方法

    这篇文章主要介绍了Python调用JavaScript代码的方法,帮助大家在不同场景里,采用的最佳调用方式,提高程序的性能,感兴趣的朋友可以了解下
    2020-10-10
  • Python实现计算最小编辑距离

    Python实现计算最小编辑距离

    这篇文章主要介绍了Python实现计算最小编辑距离的相关代码,有需要的小伙伴可以参考下
    2016-03-03
  • python线程中的同步问题及解决方法

    python线程中的同步问题及解决方法

    这篇文章主要介绍了python线程中的同步问题及解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Pytorch模型微调fine-tune详解

    Pytorch模型微调fine-tune详解

    微调(fine-tune)通过使用在大数据上得到的预训练好的模型来初始化自己的模型权重,从而提升精度,这篇文章主要介绍了Pytorch模型微调(fine-tune),需要的朋友可以参考下
    2023-01-01
  • 10个Python实现的最频繁使用的聚类算法

    10个Python实现的最频繁使用的聚类算法

    聚类或聚类分析是无监督学习问题。它通常被用作数据分析技术,用于发现数据中的有趣模式。本文为大家介绍了10个最频繁使用的聚类算法,感兴趣的可以了解一下
    2022-12-12
  • Python常用断言函数实例汇总

    Python常用断言函数实例汇总

    这篇文章主要介绍了Python常用断言函数实例汇总,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • python字符串替换第一个字符串的方法

    python字符串替换第一个字符串的方法

    这篇文章主要介绍了python字符串替换第一个字符串的方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-06-06

最新评论