У меня есть следующий код для Project Euler Problem 12. Однако для выполнения требуется очень много времени. У кого-нибудь есть предложения по его ускорению?Оптимизируйте решение Project Euler 12 (Python)
n = input("Enter number: ")
def genfact(n):
t = []
for i in xrange(1, n+1):
if n%i == 0:
t.append(i)
return t
print "Numbers of divisors: ", len(genfact(n))
print
m = input("Enter the number of triangle numbers to check: ")
print
for i in xrange (2, m+2):
a = sum(xrange(i))
b = len(genfact(a))
if b > 500:
print a
Для п, я ввести произвольное число, например, 6 раз, чтобы проверить, действительно ли она возвращает длину списка ряда факторов. Для м, введите ввод 80 000 000
Он работает относительно быстро для небольших номеров. Если я введу b > 50
; он возвращает 28 для a, что является правильным.
wow - когда вы это закончите, вы можете прочитать обзор Project Euler по проблеме. У них есть очень крутые подходы :) –
Привет, спасибо за ответ. DEF get_factors (N): Возвращает сумму (2 для я в диапазоне (1 раунд (Math.sqrt (п) +1)), если не п% я) Вы сказали, что вы используете генератор в пределах сумма. Не могли бы вы объяснить это, пожалуйста, – TopGun
Мое решение уже было учтено в sqrt (n) вместо n/2 ?, и факт не записывать их в память, но просто подсчет не улучшился? – usethedeathstar