你听过哥德巴赫猜想吗?不愧是世界近代三大数学难题之一啊(48)

小朋友们好,大朋友们好!

我是猫妹,一名爱上Python编程的小学生。

和猫妹学Python,一起趣味学编程。

今日主题

什么是哥德巴赫猜想?

如何用验证100之内的数是符合哥德巴赫猜想的?

哥德巴赫猜想

什么是素数

素数(Prime Number)是指只能被1和自身整除的正整数,也就是除了1和本身以外没有其他因数的自然数。例如,2、3、5、7、11等都是素数。

与素数相对的是合数(Composite Number),合数是指有除了1和本身以外的因数的自然数。例如,4、6、8、9、10等都是合数。

素数在数学中有着重要的地位,它与质数(Prime Number)是同义词。

质数是只能够被1和自身整除的正整数,而素数则更强调了只能被1和自身整除的特点。

素数在密码学、计算机科学、统计学等领域都有着广泛的应用。

哥德巴赫和欧拉

哥德巴赫和欧拉之间的沟通是通过信件进行的。

1742年6月7日,哥德巴赫在写给欧拉的一封信中提出了两个大胆的猜想:

任何大于5的奇数都可以表示为三个素数的和。

欧拉在回信中表示他深信哥德巴赫的这两个猜想都是正确的定理,但是欧拉当时还无法给出证明。

哥德巴赫猜想从此成为了数论领域最著名的未解问题之一。

哥德巴赫猜想有很多版本,其中最著名的是以下两个:

  1. 偶数版本:任何不小于6的偶数都可以表示为两个质数之和。
  2. 例如
  3. 4 = 2 + 2,
  4. 6 = 3 + 3
  5. 8 = 3 + 5
  6. 10 = 3 + 7
  7. 偶数版本也称为欧拉版本,即任一大于2的偶数都可写成两个素数之和,亦称为“强哥德巴赫猜想”或“关于偶数的哥德巴赫猜想”。
  8. 奇数版本:任何不小于9的奇数都可以表示为三个质数之和。
  9. 例如,
  10. 9 = 2 + 2 + 5,
  11. 11 = 2 + 3 + 6,
  12. 13 = 2 + 3 + 8,
  13. 15 = 2 + 5 + 8,
  14. 奇数版本也称为“弱哥德巴赫猜想”或“关于奇数的哥德巴赫猜想”。

2013年5月,巴黎高等师范学院研究员哈洛德·贺欧夫各特发表了两篇论文,宣布彻底证明了弱哥德巴赫猜想。

Python验证100之内的数字

如何验证一个数是否是素数呢?

import math
# 判断数字是否为素数
def isPrime(n):
    if n <= 1:
        return False
    for i in range(2, int(math.sqrt(n)) + 1):
        if n % i == 0:
            return False
    return True

如何验证[2,100]之间的所有偶数是符合哥德巴赫猜想的?

import math


# 判断数字是否为素数
def isPrime(n):
    if n <= 1:
        return False
    for i in range(2, int(math.sqrt(n)) + 1):
        if n % i == 0:
            return False
    return True


#验证大于2的偶数可以分解为两个质数之和
def goldbach(T):
# T为列表,第一个元素为区间起点,第二个元素为区间终点
    S = T[0]
    E = T[1]
    sample=[]   #用于返回样例
    print('-----------')
    if S < 4:   #若不是大于2的偶数
        S = 4   #设为大于2的最小偶数
    if S % 2 == 1:      #除2余数为1的是奇数
        S += 1          #奇数+1为偶数
    for i in range(S, E + 1, 2):    #遍历区间内所有偶数
        isGoldbach = False
        for j in range(i // 2 + 1): # 表示成两个素数的和,其中一个不大于1/2
            if isPrime(j):
                k = i - j
                if isPrime(k):
                    isGoldbach = True
                    sample.append((i,j,k))
                    break
        if not isGoldbach:
            #如果打印这句话表示算法失败或欧拉错了
            sample.append('哥德巴赫猜想失败!')
            break
    return sample


if __name__ == '__main__':
    sample = goldbach([2,100])
    print(sample)

好了,我们今天就学到这里吧!

如果遇到什么问题,咱们多多交流,共同解决。

我是猫妹,咱们下次见!

猜你喜欢

转载自blog.csdn.net/parasoft/article/details/130894744