В настоящее время я пытаюсь решить проблему 3 проекта Эйлера с помощью python, который пытается найти наибольшее простое число фактор числа. Метод, который я использую, по сути является грубым форсированием каждого целого числа, меньшего, чем рассматриваемое целое число, проверяя, является ли оно множителем указанного целого числа, а затем проверяя, является ли оно простым. Однако по какой-то причине мой код не работает.
Я попытался создать функцию, которая проходит через каждое целое число (i) меньше заданного целого числа (n), и если i делится на n, функция затем переходит к проверке, является ли i простым числом, проходя через каждое целое число, меньшее или равное i (x). если x является множителем i, то значение добавляется к целому числу с нулевым значением, определенному как (a). После этого, если в итоге a складывается до i + 1, то это означает, что множитель является простым, поскольку делимыми числами были только он сам и 1. Код выглядит следующим образом:
def primefactor(n):
for i in range(1, n+1): #goes through each integer less than n
if n % i == 0: #checks if integer is a factor
for x in range(1, i+1): #another loop to check if the factor is prime
a = 0
primenumbers = []
if i % x == 0:
a += x
if a == i + 1:
primenumbers.append(i)
print(primenumbers)
primefactor(13195)
Я ожидал, что на выходе он напечатает список всех простых множителей числа, в данном случае [5, 7, 13, 29]
, но вместо этого все, что я получил, был пустым списком []
primenumbers = []
вы превращаетеprimenumbers
в пустой список в каждом цикле .... - person Error - Syntactical Remorse   schedule 12.05.2019