J'ai lu quelque part que le plus algorithme efficace trouvé peut calculer les facteurs le temps, mais le code que j'ai écrit est O ( n ) ou éventuellement O ( n log n ) en fonction de la rapidité de la division et du module. Je suis sûr que j'ai mal compris quelque chose, mais je ne sais pas où. Voici ce que j'ai écrit sous forme de pseudo-code.
function factor(number) -> list
factors = new list
if number < 0
factors.append(-1)
number = -number
i = 2
while i <= number
while number % i == 0
factors.append(i)
number /= i
i++
return factors