Я работаю над проектом по Euler задаче 3,Prime программа факторизация в питоне не дает выхода
простые множители 13195 являются 5, 7, 13 и 29.What является крупнейшим основным фактором числа 600851475143?
Код, который я придумал следующим образом:
def q_prime(a):
if a == 2:
return True
elif a < 2:
return False
for i in range(2,a):
if a%i == 0:
return False
else:
return True
def prime_factor(x):
prime_factors =[]
for i in range(1,x):
if q_prime(i) == True and x%i == 0:
prime_factors.append(i)
return prime_factors
Вызов этой функции 13195 дал мне [5,7,13,29], как и ожидалось. Я пробовал некоторые другие комбинации, такие как 1035, которые дают [3,5,23]. Однако, когда я вызываю эту функцию на 600851475143, я не получаю никакого вывода. Более того, я тоже не получаю сообщение об ошибке. Он работает некоторое время, и простой перезапуск оболочки
Я знаю, что это не элегантный код, и я догадываюсь, что грубый заставляет меня преодолеть такую проблему, потому что большое количество вызывает эту проблему? Что именно происходит?
Я вижу. Значит, нужен лучший алгоритм? Вернуться к доске для рисования. Что означает «убитый: 9»? – getafix
@getafix: 9 - номер сигнала для SIGKILL. Подробности здесь не очень важны, но вот некоторая информация: https: //en.wikipedia.org/wiki/Unix_signal # SIGKILL – NPE