Ниже приведен алгоритм, который находит простую факторизацию для заданного числа 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