Sto appena iniziando a imparare a codificare in Python. Sto cercando di scrivere del codice per rispondere a questa domanda Project Euler:Python "OverflowError"
i fattori primi di 13195 sono 5, 7, 13 e 29.
Qual è il più grande fattore primo del numero 600.851.475.143?
mio programma funziona con il caso di test di 13195, ma quando provo ad entrare 600.851.475.143, ottengo l'errore: "OverflowError: range() risultati ha troppe voci" Qualcuno sa come posso risolvere questo problema?
Ecco il mio codice:
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
Qualsiasi aiuto o suggerimenti sarebbe molto apprezzato!
lo stai facendo male. Per ogni fattore 'x', c'è un altro fattore' y' tale che 'x * y = num'. Se 'x' nell'ennesimo fattore più piccolo,' y' sarà l'ennesimo fattore (dimostrando che questo è un esercizio lasciato al lettore). Trovare il fattore più piccolo 'x', e fare' y = num/x'. Se "y" è primo, è il tuo numero, se no, continua. Inoltre, 'x' è probabilmente più piccolo di' sqrt (num) ', quindi puoi ridurre un po 'il tuo' range() '. – WhyNotHugo