前言
任意大于2的偶数都是两个质数的和,对于101810^{18}1018以内所有数字
书里提的
对于计算机科学家来说,证明程序和系统的正确性是最重要的事情之一,
- 即程序或系统是否确实按照预期运行。
python代码实现
defsieve_of_eratosthenes(limit):sieve=[True]*(limit+1)sieve[0]=sieve[1]=Falsefornuminrange(2,int(limit**0.5)+1):ifsieve[num]:sieve[num*num:limit+1:num]=[False]*len(sieve[num*num:limit+1:num])primes=[ifori,is_primeinenumerate(sieve)ifis_prime]returnprimesdefgoldbach_conjecture(even_number,primes):forprimeinprimes:ifprime>even_number//2:breakif(even_number-prime)inprimes_set:return(prime,even_number-prime)returnNone# 示例使用limit=10000primes=sieve_of_eratosthenes(limit)primes_set=set(primes)even_number=56# 可以替换为任何大于2的偶数result=goldbach_conjecture(even_number,primes_set)ifresult:print(f"{even_number}={result[0]}+{result[1]}")else:print(f"No primes found for{even_number}")