怎么用Python验证哥德巴赫猜想?
要求有多组解是输出a和b之差绝对值最小的一组解
哥德巴赫猜想指出,任何大于2的偶数都可以表示为两个质数之和。下面是一个用Python验证哥德巴赫猜想的程序,同时输出a和b之差绝对值最小的一组解:
def is_prime(n):
"""判断一个数是否为质数"""
if n <= 1:
return False
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return False
return True
def goldbach_conjecture(n):
"""验证哥德巴赫猜想"""
if n % 2 != 0 or n <= 2:
return False
primes = [i for i in range(2, n) if is_prime(i)]
for p in primes:
if is_prime(n - p):
return (p, n - p)
# 验证哥德巴赫猜想,并输出a和b之差绝对值最小的一组解
n = 1000
results = []
for i in range(4, n + 1, 2):
res = goldbach_conjecture(i)
if res:
results.append((i, res[0], res[1]))
# 找到最小的差
min_diff = float('inf')
for r in results:
diff = abs(r[1] - r[2])
if diff < min_diff:
min_diff = diff
#输出结果
for r in results:
diff = abs(r[1] - r[2])
if diff == min_diff:
print("两质数之差绝对值最小的解之一:偶数{}为两个质数{}和{}之和".format(r[0], r[1], r[2]))