Estoy empezando a aprender a codificar en Python. Estoy tratando de escribir algo de código para responder a esta pregunta Proyecto Euler:Python "OverflowError"
Los factores primos de 13195 son 5, 7, 13 y 29.
¿Cuál es el mayor factor primo del número 600 851 475 143?
Mi programa funciona con el caso de prueba de 13195, pero cuando intento ingresar 600851475143, aparece el error: "OverflowError: range() results tiene demasiados elementos" ¿Alguien sabe cómo puedo solucionar esto?
Aquí está mi código:
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
Cualquier ayuda o sugerencia sería muy apreciada!
lo estás haciendo mal. Para cada factor 'x', hay otro factor' y' tal que 'x * y = num'. Si 'x' en el enésimo factor más pequeño,' y' será el enésimo factor más grande (lo que demuestra que este es un ejercicio que le queda al lector). Encuentra el factor más pequeño 'x', y haz' y = num/x'. Si 'y' es primo, es su número, si no, continúe. Además, 'x' es probablemente más pequeño que' sqrt (num) ', por lo que puede reducir su' range() 'bastante. – WhyNotHugo