Я пробовал this проблема, но не смог получить правильный ответ. Может ли кто-нибудь помочь мне определить проблему в моем коде?Правильные тройные ответы не верны
Моя логика: используя команду seive, создал список простых чисел. Используя этот список простых чисел, я просто перепутал решение.
import math
n = 50000000
exponent = (2, 3, 4)
prime_numbers = [True]*n
prime_numbers[0] = False
prime_numbers[1] = False
max_prime = 2
#prime number creation
for i in range(2, int(math.sqrt(n))+1):
if prime_numbers[i]:
for j in range(i*i, n, i):
prime_numbers[j] = False
# list of prime numbers
list_data = []
for i in range(2, n):
if prime_numbers[i]:
if i**2 >= n:
break
list_data.append(i)
count = 0
for i, i_data in enumerate(list_data):
if i_data**4 >= n:
break
for j, j_data in enumerate(list_data):
if j_data**3 >= n:
break
for k, k_data in enumerate(list_data):
if k_data**2 >= n:
break
if (k_data**2 + j_data**3 + i_data**4) < n:
count += 1
print(count)
Задача задает равную выписку 'if (k_data ** 2 + j_data ** 3 + i_data ** 4)
Caridorc
Что делать, если два варианта простых чисел производят одну и ту же сумму? – user2357112
Вы можете разбить цикл 'for j', если' i_data ** 4 + j_data ** 3> = n', не так ли? Это должно сэкономить вам несколько итераций, если ничего другого. –