def gold_batch(n):
'''任一大于2的偶数,都可表示成两个质数之和。'''
# 找质数
is_prime = [True] * (n + 1)
i = 2
while (i * i <= n):
if is_prime[i]:
j = i
while (j * i <= n) :
is_prime[i * j] = False
j += 1
i += 1
count = 0
for i in range(2, n + 1):
if is_prime[i]:
count += 1
# 哥德巴赫猜想
primes = [None] * count
idx = 0
for i in range(2, n+1):
if is_prime[i]:
primes[idx] = i
idx += 1
print('all primes :',primes)
left = 0
right = count - 1
while left < right:
if n == primes[left] + primes[right]:
print(n, '=', primes[left], '+',primes[right])
left += 1
right -= 1
elif n > (primes[left] + primes[right]):
left += 1
else:
right -= 1
gold_batch(30)