Я действительно пытаюсь улучшить свои навыки математики/кодирования/решения проблем, работая над проблемами Project Euler, и я немного застрял в третьем вопросе. Вопрос: «Первыми факторами 13195 являются 5, 7, 13 и 29. Каков самый большой простой коэффициент числа 600851475143?»Project Euler Q # 3 Python
И вот мой код до сих пор
import math
def isPrime(n):
if n > 1:
for i in range(2, n):
if n % i == 0:
return False
else:
return True
else:
return False
def highFactor(m):
factors = []
for i in range(2, int(math.sqrt(m))):
if isPrime(i):
if m % i == 0:
factors.append(i)
print max(factors)
highFactor(13195)
Так что это, очевидно, испытывал на примере они дали, так как я уже знаю, что ответ должен быть 29, но когда я запускаю код дает мне 91. Что Я ошибаюсь?
Ваш 'Функция isPrime' возвращает истину слишком рано. –
Возможно, вам захочется найти лучший алгоритм для простой проверки. –
Для отладки это может помочь сначала проверить ваш код с более низким номером и распечатать промежуточные результаты. – tfv