侧边栏壁纸
博主头像
问道

问道的小花园,总能给你带来惊喜

  • 累计撰写 68 篇文章
  • 累计创建 35 个标签
  • 累计收到 3 条评论

python全项目实战系列(三):python验证哥德巴赫猜想

问道
2022-06-25 / 0 评论 / 0 点赞 / 508 阅读 / 1,199 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-06-25,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

本系列旨在通过一系列由浅入深的python实战代码或项目,使普通人也能感受到编程的乐趣,编程能够在平时的工作生活上有所帮助。欢迎查看系列的开篇词和前面文章。

这是本系列的第三篇文章,使用python来验证大名鼎鼎的哥德巴赫猜想。

哥德巴赫猜想

哥德巴赫1742年在给欧拉的信中提出了一个猜想 。但是哥德巴赫自己无法证明它,于是就写信请教赫赫有名的大数学家欧拉帮忙证明,但是一直到死,欧拉也无法证明,故该猜想被命名为 哥德巴赫猜想。

今日常见的猜想陈述为欧拉的版本,即任何大于2的偶数都能够写成两个质数相加的形式,类似于4=2+2(2是最小的质数),8=3+5。

因为质数没有什么规律性,所以该猜想一直未被完全证明。我国著名数学家陈景润证明了大偶数可以表示为1个质数和不超过2个质数乘积之和的形式,即1+2,这是距离哥德巴赫猜想最近的成果。

求解思路

本质使用穷举法

  1. 先是要验证一个正整数是否为质数,

  2. 如果一个大于2的偶数减去一个质数的结果仍然为质数,则满足猜想。

  3. 遍历4到某个数,如果都能打印出有两个质数相加的形式,则证明了4到这个数之间的哥德巴赫猜想。

受制于电脑的计算能力和计算时间,遍历区间不会太大,实际上现在用穷举的方法已经证明的很大的数的哥德巴赫猜想。

代码实现

def isprime(n):  # 定义函数,检验一个数是否为质数,
    i = 2
    while (i < n):
        if n % i == 0:  # 除以2到其本身-1,除的尽说明不是质数,返回false
            return False
        i += 1
    return True


def GDsolve(n):  # 定义函数,判断一个数是否满足哥巴德赫猜想
    for i in range(2, n):  # 遍历2到这个数本身,看是否满足两个质数相加等于它,如果满足返回true
        if isprime(i):
            if isprime(n - i):  # 两个if判断i和n-i是否都为质数,如果为真的话,则该数符合哥德巴赫猜想
                print(n,'写成两个质数相加的形式是:',n, '=', i, '+', n - i)  # 输出i最早满足哥德巴赫的结果
                return True
    return False


# 输出某个大于2的偶数的哥德巴赫形式
GDsolve(100000)

# 遍历从i到10000这个数段中偶数的哥巴德赫形式,想从最早开始验证则i取4
i = 9990
while (GDsolve(i) and i < 10000):
    i += 2


输出结果

100000 写成两个质数相加的形式是: 100000 = 11 + 99989
9990 写成两个质数相加的形式是: 9990 = 17 + 9973
9992 写成两个质数相加的形式是: 9992 = 19 + 9973
9994 写成两个质数相加的形式是: 9994 = 53 + 9941
9996 写成两个质数相加的形式是: 9996 = 23 + 9973
9998 写成两个质数相加的形式是: 9998 = 31 + 9967
10000 写成两个质数相加的形式是: 10000 = 59 + 9941

点赞收藏,及时接收更新。

0

评论区