Я попытался написать код, который возвращает одну пару, которая удовлетворяет гипотезе Гольдбаха для данного N. Предположение утверждает, что каждое четное число, большее 4, может быть выражено как сумма двух простых чисел.Функция возвращает пару, которая слегка отклонена, например, goldbach (34) возвращает (5, 31), а не правильный ответ (3, 31).Аналогично, goldbach (38) возвращает (11, 31).Есть идеи, где я иду не так?Я понимаю, что этот код не очень эффективен, однако именно так меня просили написать код для моего назначения.
def eratosthenes(n):
primes = list (range(2, n+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
def odd_primes(N):
oddprimes = eratosthenes(N)
oddprimes.remove(2)
return(oddprimes)
def goldbach(N):
x, y = 0, 0
result = 0
if N % 2 == 0:
prime = odd_primes(N)
while result != N:
for i in range(len(prime)):
x = prime[i]
if result == N: break
for j in range(len(prime)):
y = prime[j]
result = x + y
if result == N: break
return x, y