<p><strong>可能的扰流板警告</strong></p>
<p>为什么我花了很多时间去改进算法,但是我不能解决这个问题。在</p>
<p>我试图解<a href="http://projecteuler.net/problem=12" rel="nofollow">Project Euler #12</a>,求出最小的三角形数有500个以上的除数,但它说我的答案是不正确的。在</p>
<p>下面是我的Python代码:</p>
<pre><code>import time
# function to get the number of divisors
def div(n):
d=2
for i in range(2,int(n**.5)+2):
if (n % i) == 0:
d += 1
return d
start = time.time()
w = True
n=m=1
while w:
n += 1
s = (n*(n+1))/2 # nth triangle number
r = div(s)
if r > m:
m = r
print s,"has",r,"divisors"
if r > 500:
w = False
print "Solved in",((time.time()-start)*1000),"milliseconds"
</code></pre>
<p>该代码的输出是(66秒后):</p>
^{pr2}$
<p>。。。在</p>
<pre><code>76576500 has 289 divisors
103672800 has 325 divisors
236215980 has 385 divisors
842161320 has 513 divisors
Solved in 65505.5799484 milliseconds
</code></pre>
<p>但是,如果我在ProjectEuler问题中输入842161320,它会说它是不正确的。在</p>
<p>我做错什么了?在</p>