Python encontrar factores principales

Pregunta de dos partes ...

1) Al tratar de determinar el factor primordial más grande de 600851475143, se encontró que este programa en línea parece funcionar, el problema es que me está costando entender cómo funciona exactamente (entiendo lo básico de lo que está haciendo el programa) ... Además, si pudiera arrojar algo de luz sobre cualquier método que conozca acerca de encontrar primo (quizás sin probar cada número) y cómo funciona su método.

El código que encontré en línea por factor principal

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) ¿Por qué el código es mucho más rápido que este código (el código es solo para probar la velocidad y no tiene otro propósito real?)

i = 1
while i < 100:
    i += 1
#takes about ~3secs

Respuestas a la pregunta(14)

Su respuesta a la pregunta