Будет 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)
Еще оптимизировал. В создавался список простых, здесь нет. Зато считает за секунду. Есть еще оптимизация. Она в другом ответе.
Объяснение: