Python “OverflowError”

Je commence tout juste à apprendre à coder en Python. Je suis en train d'écrire un peu de code pour répondre à ce Projet Euler Question:

Les facteurs premiers de 13195 sont 5, 7, 13 et 29.

Ce qui est le plus grand facteur premier de le nombre 600851475143 ?

Mon programme fonctionne avec les cas de test de 13195, mais quand j'essaie d'entrer 600851475143, j'obtiens l'erreur: "OverflowError: range() résultats a trop d'éléments"
Personne ne sait comment je peux résoudre ce problème?

Voici mon code:

class Euler3:
    "A class to find the largest prime factor of a given number"
     n = 600851475143
     primeFactors = []
     for i in range(2,n):
         if (n%i ==0):
            primeFactors.append(i)
            n = n/i
            i = i -1 #reset i
     print primeFactors

Toute aide ou suggestion serait bien apprécié!

Vous le faites mal. Pour chaque facteur de x, il y a un autre facteur y tels que x*y = num. Si x dans le n-ième plus petit facteur, y sera le n-ième facteur le plus important (la preuve de ceci est un exercice laissé au lecteur). Trouver le plus petit facteur x, et ne y = num/x. Si y est premier, c'est votre numéro, si non, continuez. Aussi, x est sensiblement plus petit que sqrt(num), de sorte que vous pouvez réduire votre range() un peu.

OriginalL'auteur Erica Dohring | 2012-05-28