原文:https://blog.zeruns.tech/index.php/archives/371/
什麼是哥德巴赫猜想
1742年6月,德國著名的數學家哥德巴赫(C.Goldbah 1690-1764)預言:
“任何一個6以上的偶數都可以分解爲兩個素數的和“
這就是著名的哥德巴赫猜想,俗稱“1+1= 2“,例如
6=3+3
8=5+3
10=5+5
一個偶數分解成兩個素數的和的分解不是唯一的,例如
24=5+19
24=17+7
源碼
def ss(i): # 判斷一個數是否素數
j = 0
for j in range(2, i + 1):
if i % j == 0:
break
if j == i: # 當j等於i時說明循環沒有被中斷,i不能被除1和它本身之外的數整除,i是素數
return 1 # 如果是素數就返回1
else:
return 0 # 如果不是素數就返回0
# 驗證某個範圍內的數
flag = 1
for n in [a for a in range(4, 8888) if a % 2 == 0]:#生成4到8888之間的偶數
maxp = n / 2
for p in range(int(maxp), 0, -1):
if ss(p): #判斷p是否素數
q = n - p # https://blog.zeruns.tech
if ss(q): #判斷q是否素數
print('%d = %d + %d OK!' % (n, p, q))#p和q都爲素數時說明n符合哥德巴赫猜想
break #跳出循環繼續下一個數的驗證
elif p == 1:#當p等於1時說明n不符合哥德巴赫猜想
print(n, ' NO!')
flag = 0
if flag == 0:
break
# 一直驗證到失敗爲止
flag = 1
n = 4
while flag == 1:
maxp = n / 2
for p in range(int(maxp), 0, -1):
if ss(p):
q = n - p
if ss(q):
print('%d = %d + %d OK!' % (n, p, q))
break
elif p == 1:
print(n, ' NO!')
flag = 0
n += 2