Предмет: Информатика, автор: 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")
p15: ТАК И ДОЛЖНО БЫТЬ!
p15: Если не нравится. Справочник - и переписываешь эту структуру. Это на 5 минут изучения
p15: Условие - тоже читаешь что такое true и false
ruslanorazayevich: я у себя на аккаунте задал вопрос, в этом вопросе я положу фотку, как я написал твой, просмотришь...
p15: смотри там отает
p15: кроме цифры вверху
p15: Еще раз перепроверил. Все верно должно быть.
ruslanorazayevich: не понял почему вопрос был удален?
ruslanorazayevich: напиши мне в лс если что, я просто не понял что произошло

Ответы

Автор ответа: p15
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)

Еще оптимизировал. В прошлом создавался список простых, здесь нет. Зато считает за секунду. Есть еще оптимизация. Она в другом ответе.

Объяснение:


p15: Проверь это. Ответ кстати тот же - 6857
Похожие вопросы
Предмет: Русский язык, автор: ася5556
Предмет: Английский язык, автор: Софья019284
Предмет: Алгебра, автор: kuvshinchikovi
Предмет: История, автор: Valeria205