Я пытаюсь решить эту проблему: гипотеза Гольдбаха
Покажите с помощью программы "goldbach.py", что все четные числа до 1000 действительно могут быть записаны как сумма двух простых чисел.В частности: для каждого четного числа также явным образом (на экране) покажите, что оно может быть записано как сумма двух простых чисел, как в примере ниже
Еще важнее, конечно, если вы найдете число, котороене соответствует подозрению Гольдбаха.Убедитесь, что ваша программа четко отображает такое открытие на экране.Бинго!
питон goldbach.py
16 = ...
18 = 5 + 13
20 = 3 + 17
22 = 5 + 17
24 = ...
Прогресс
До сих пор я создал список, в котором все простые числа до 1000сохраняются, и затем я создал список, в котором все комбинации простых чисел, сумма которых является четным числом до 1000. Я знал формат, чтобы это вывести 3 + 17, но я застрял в попытке сказать этосумма (пары) = премьер1 "+" премьер2.Например, должно быть 3 + 17 = 20.Кроме того, я не знаю, как получить только один пример пары простых чисел, чья сумма равна четному числу до 1000. Мне нужно как-то разорвать цикл.
Поскольку функция sum не работала, я обнаружил, что могу преобразовать ее в «numpy array», а затем использовать «накопить».Я просто не могу заставить его работать и знаю, что получаю сообщение об ошибке 'DeprecationWarning: elementwise == сравнение не удалось;в будущем это вызовет ошибку. '
Может ли кто-нибудь помочь мне с кодом?
from itertools import accumulate, islice
from numpy import array
import numpy as np
primes = []
pairs = []
numpy_pairs = np.asarray(pairs)
for num in range (4, 1000):
for j in range (2, num):
if (num % j) == 0:
break
else:
primes.append(num)
#for x in range(2,1000):
# if x in primes:
# print ("Ja, het getal {} komt voor in mijn primes".format(x))
for x in range(2,1000):
if x % 2 == 0:
for prime1 in primes:
for prime2 in primes:
if prime1 + prime2 == x and [prime1, prime2] not in numpy_pairs and [prime2, prime1] not in numpy_pairs:
np.append(numpy_pairs,[prime1,prime2])
results = ("{}+{}={}".format(i, j, k) for i, j in zip(numpy_pairs[0::2],
numpy_pairs[1::2]) for k in accumulate(islice(numpy_pairs,numpy_pairs.stop)))
print('\n'.join(results))