Что не так с кодом python? (Он работает на маленьких цифрах типа 194 и т. п)
Вопрос к которому я писал этот код:Каков самый большой делитель числа 600851475143, являющийся простым числом?
d=0
i=1
a=600851475143
while i<=600851475143:
if (a%i==0) and (i%2!=0) and (i%3!=0) and (i%5!=0) and (i%7!=0) and (d<i):
d=i
i=i+1
continue
print(d)
Answers & Comments
Ответ:
Будет 6857
n=600851475143
md=0
i=3
while i<n:
if not(n%i):
while not(n%i):
n=n/i
if md<i: md=i
i+=2
print (md) if n<md else print (n)
Еще оптимизировал. В прошлом создавался список простых, здесь нет. Зато считает за секунду. Есть еще оптимизация. Она в другом ответе.
Объяснение: