我是一名数学系学生,目前正在学习一个名为“计算数学”的模块。作为作业的一部分,我必须使用Python研究前10,000个数字的Goldbach猜想。我已经使用Eratosthenes的筛子来获得高达10000(不包括1和2)的质数:
def sieve(highest_prime):
primes=list(range(2,highest_prime+1))
for i in primes:
j=2
while i*j<=primes[-1]:
if i*j in primes:
primes.remove(i*j)
j=j+1
return primes
N_primes=sieve(10000)
del N_primes[0]
我还获得了一个最多100000(不包括2和4)的偶数列表: even_numbers = list(range(6,10001,2)) 现在,我需要一个代码来测试“ even_numbers”中的所有整数是否都可以表示为N_primes中两个数字的和。
任何帮助将不胜感激,
橄榄
答案 0 :(得分:0)
对于每个偶数,您可以通过将质数迭代到n / 2并检查是否从偶数减去质数来得出质数来检查它是否满足戈德巴赫猜想。
示例代码:
for n in even_numbers:
found = False
for i in primes:
if (n - i) in primes:
print(n,':',i, (n-i))
found = True
break
if i >= n/2:
break
if not found:
raise Exception("You have disproven Goldbach's conjecture: %d is the exception." % n)