Вопрос из двух частей:
1) Пытаясь определить наибольший простой фактор из 600851475143, я обнаружил, что эта программа в Интернете работает. Проблема в том, что мне трудно понять, как это работает, хотя я понимаю основы того, что делает программа. Кроме того, я хотел бы, чтобы вы могли пролить свет на любой известный вам метод определения простых факторов, возможно, без проверки каждого числа, и на то, как работает ваш метод.
Вот код, который я нашел в Интернете для первичной факторизации:
n = 600851475143
i = 2
while i * i < n:
while n % i == 0:
n = n / i
i = i + 1
print (n)
#takes about ~0.01secs
2) Почему этот код намного быстрее, чем этот код, который предназначен только для проверки скорости и не имеет реальной цели, кроме этой?
i = 1
while i < 100:
i += 1
#takes about ~3secs