第一次试尝发表一篇文章
哥德巴赫猜想大概的意思是:一个不小于6的偶数都是两个奇素数之和,即所谓的1+1=2。我当然无法证明,写一个验证程序玩玩还是可以的,我用Python,不吝赐教。
""" 哥德巴赫猜想。一个不小于6的偶数都是两个奇素数之和,一个不小于9的奇数都是3个奇素数之和。
输入任意一个上述范围的整数,判断是否满足要求。
"""
import math
import time
def prime(m):
x = math.ceil(math.sqrt(m))
for k in range(3, x + 2, 2):
if m != k and m % k == 0:
return False
return True
def even_numbers(m):
for k in range(3, int(m / 2) + 2, 2):
if prime(k) and prime(m - k):
print("{0}+{1}={2}".format(k, m - k, m))
return True
return False
def odd_number(m):
for i in range(3, int(m / 2) + 2, 2):
if prime(i):
for j in range(3, int((m - i) / 2) + 2, 2):
if prime(j) and prime(m - i - j):
print("{0}+{1}+{2}={3}".format(i, j, m - i - j, m))
return True
return False
if __name__ == '__main__':
try:
n = int(input("请输入一个不小于6的偶数或不小于9的奇数:\n"))
if n == 7 or n < 6:
print("输入错误!")
exit()
print("计算中……")
t0 = time.time()
mark = even_numbers(n) if n % 2 == 0 else odd_number(n)
print("耗时{0}s".format(time.time() - t0))
if not mark:
print("验证错误!")
except ValueError:
print("输入错误!")
D:\Python\study\venv\Scripts\python.exe D:/Python/study/1+1=2.py
请输入一个不小于6的偶数或不小于9的奇数:
123456789876543212
计算中……
211+123456789876543001=123456789876543212
耗时39.79626250267029s
Process finished with exit code 0
D:\Python\study\venv\Scripts\python.exe D:/Python/study/1+1=2.py
请输入一个不小于6的偶数或不小于9的奇数:
12345678987654321
计算中……
3+37+12345678987654281=12345678987654321
耗时12.457630634307861s
Process finished with exit code 0