Projet Euler 3 - Pourquoi cette méthode de travail?

Les facteurs premiers de 13195 sont 5, 7, 13 et 29.
Quel est le plus grand facteur premier de le nombre 600851475143?

J'ai résolu ce problème sur le Projet Euler mon propre chemin, qui a été lente, et puis j'ai trouvé cette solution sur un compte github. Je ne peux pas comprendre pourquoi il fonctionne. Pourquoi un certain nombre de facteurs supprimé, égal à un indice? Toute idée?

def Euler3(n=600851475143):
    for i in range(2,100000):
        while n % i == 0:
            n //= i
            if n == 1 or n == i:
                return i
La fonction renvoie 6857. Il est facile à exécuter.
il ne fonctionnera pas pour 600851475149.
Yep ressemble à un hack pour résoudre un problème spécifique sur le Projet Euler

OriginalL'auteur ballaw | 2012-09-26