Следното по-долу е алгоритъм, който намира разлагането на прости множители за дадено число N. Чудя се дали има някакви начини да направя това по-бързо, като използвам ОГРОМНИ числа. Говоря като 20-35 цифрени числа. Искам да се опитам да ги накарам да вървят възможно най-бързо. Някакви идеи?
import time
def prime_factors(n):
"""Returns all the prime factors of a positive integer"""
factors = []
divisor = 2
while n > 1:
while n % divisor == 0:
factors.append(divisor)
n /= divisor
divisor = divisor + 1
if divisor*divisor > n:
if n > 1:
factors.append(n)
break
return factors
#HUGE NUMBERS GO IN HERE!
start_time = time.time()
my_factors = prime_factors(15227063669158801)
end_time = time.time()
print my_factors
print "It took ", end_time-start_time, " seconds."
divisor
с 1 всеки път, можете вместо това да итерирате простите числа. - person desired login   schedule 03.04.2014