我有以下针对 Project Euler Problem 12 的代码。但是,执行起来需要很长时间。有人有加快速度的建议吗?
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
Run Code Online (Sandbox Code Playgroud)
对于 n,我输入任意数字(例如 6)只是为了检查它是否确实返回因子数量列表的长度。对于 m,我输入 80 000 000
对于少量的情况,它的工作速度相对较快。如果我输入b > 50;对于 a,它返回 28,这是正确的。