Zeruns's Blog

Python验证哥德巴赫猜想

什么是哥德巴赫猜想

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

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »