哥德巴赫1742年給歐拉的信中哥德巴赫提出了以下猜想:任一大於2的整數都可寫成三個質數之和 [1] 。但是哥德巴赫自己無法證明它,於是就寫信請教赫赫有名的大數學家歐拉幫忙證明,但是一直到死,歐拉也無法證明。 [2] 因現今數學界已經不使用“1也是素數”這個約定,原初猜想的現代陳述爲:任一大於5的整數都可寫成三個質數之和。(n>5:當n爲偶數,n=2+(n-2),n-2也是偶數,可以分解爲兩個質數的和;當n爲奇數,n=3+(n-3),n-3也是偶數,可以分解爲兩個質數的和)歐拉在回信中也提出另一等價版本,即任一大於2的偶數都可寫成兩個質數之和。今日常見的猜想陳述爲歐拉的版本。把命題"任一充分大的偶數都可以表示成爲一個素因子個數不超過a個的數與另一個素因子不超過b個的數之和"記作"a+b"。1966年陳景潤證明了"1+2"成立,即"任一充分大的偶數都可以表示成二個素數的和,或是一個素數和一個半素數的和"。
今日常見的猜想陳述爲歐拉的版本,即任一大於2的偶數都可寫成兩個素數之和,亦稱爲“強哥德巴赫猜想”或“關於偶數的哥德巴赫猜想”。——百度百科
構造函數驗證哥德巴赫猜想
當然這裏我們只能驗證一部分數的哥德巴赫猜想,哥德巴赫猜想的證明還需要數學家來完成。
def isit(num):
'''
判斷num這個是是不是質數
如果是質數返回True如果不是返回False
'''
if num < 0:
return False
if num == 0 or num == 1:
return False
if num ==2 or num == 3:
return True
if num > 3:
isdata = True
for i in range(2,num):
if num % i == 0:
isdata = False
break
return isdata
def digitl(number):
'''
將數字number分解成倆個質數的和並且輸出
'''
for j in range(2,number):
if isit(j) == True:
z = number - j
if isit(z) == True:
print(number,end='=')
print('%d+%d'%(j,z))
return True
digitl(20)
我們還可以再寫一個函數與以上函數組合判斷一定範圍內的偶數符不符合哥德巴赫猜想
def scope(num):
for number in range(2,num+1,2):
digitl(number)
scope(20) #判斷20以內的數