Python驗證哥德巴赫猜想

原文: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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章