我有一些小软件可以计算每个三角形数的因子数,以查看其中第一个因子的数量超过 X 个(是的,这是一个投影仪问题,数字 12,虽然我没有解决它)...当我试图使 X 一些随机值以查看代码的作用和时间时,我注意到一些奇怪的事情(至少对我来说):直到 X=47 执行时间以明显正常的方式增加,但是当 X = 48 它比正常增加更多,并且函数调用比速率大得多,如果我这么说它(爆炸)..它为什么这样做?
编码:
def fac(n):
c=0
for i in range (1,n+1):
if n%i==0:
c=c+1
return c
n=1
while True:
summ=0
for i in range (1,n+1):
summ=summ+i
if fac(summ)>X:
break
n=n+1
print summ
在分析时:
when X=45 : 314 function calls in 0.027 CPU seconds
when X=46 : 314 function calls in 0.026 CPU seconds
when X=47 : 314 function calls in 0.026 CPU seconds
when X=48 : 674 function calls in 0.233 CPU seconds
when X=49 : 674 function calls in 0.237 CPU seconds
我假设如果我继续我会遇到系统调用增加和时间突然增加的其他点,以前有这样的点,但时间太小所以没那么重要。为什么函数调用突然增加?难道不应该为新值再调用一次函数吗?
PS我使用cProfile作为分析器,X
这里的代码只是为了演示,我直接在代码中写了值...提前谢谢...