小朋友们好,大朋友们好!
我是猫妹,一名爱上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的奇数都可以表示为三个素数的和。
欧拉在回信中表示他深信哥德巴赫的这两个猜想都是正确的定理,但是欧拉当时还无法给出证明。
哥德巴赫猜想从此成为了数论领域最著名的未解问题之一。
哥德巴赫猜想有很多版本,其中最著名的是以下两个:
- 偶数版本:任何不小于6的偶数都可以表示为两个质数之和。
- 例如
- 4 = 2 2,
- 6 = 3 3
- 8 = 3 5
- 10 = 3 7
- 偶数版本也称为欧拉版本,即任一大于2的偶数都可写成两个素数之和,亦称为“强哥德巴赫猜想”或“关于偶数的哥德巴赫猜想”。
- 奇数版本:任何不小于9的奇数都可以表示为三个质数之和。
- 例如,
- 9 = 2 2 5,
- 11 = 2 3 6,
- 13 = 2 3 8,
- 15 = 2 5 8,
- 奇数版本也称为“弱哥德巴赫猜想”或“关于奇数的哥德巴赫猜想”。
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)
好了,我们今天就学到这里吧!
如果遇到什么问题,咱们多多交流,共同解决。
我是猫妹,咱们下次见!