Предмет: Информатика,
автор: ruslanorazayevich
Что не так с кодом 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)
ruslanorazayevich:
Хорошо, просто там еще в конце условие не дописано(там просто "...if d else")
Ответы
Автор ответа:
1
Ответ:
Будет 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)
Еще оптимизировал. В прошлом создавался список простых, здесь нет. Зато считает за секунду. Есть еще оптимизация. Она в другом ответе.
Объяснение:
Похожие вопросы
Предмет: Русский язык,
автор: ася5556
Предмет: Русский язык,
автор: жансаяяяя
Предмет: Английский язык,
автор: Софья019284
Предмет: Алгебра,
автор: kuvshinchikovi
Предмет: История,
автор: Valeria205