【发布时间】:2013-03-22 00:44:11
【问题描述】:
我正在尝试解决 Project Euler 的第 12 个问题。我可以在将近 4 分钟内计算出超过 500 个除数的数字。我怎样才能让它更快?这是尝试;
import time
def main():
memo={0:0,1:1}
i=2
n=200
while(1):
if len(getD(getT(i)))>n:
break
i+=1
print(getT(i))
#returns the nth triangle number
def getT(n):
if not n in memo:
memo[n]=n+getT(n-1)
return memo[n]
#returns the list of the divisors
def getD(n):
divisors=[n]
for i in xrange(1,int((n/2)+1)):
if (n/float(i))%1==0:
divisors.append(i)
return divisors
startTime=time.time()
main()
print(time.time()-startTime)
【问题讨论】:
标签: python performance math