擅长:python、mysql、java
<p>我看到两个虫子:</p>
<ul>
<li>您的<code>div</code>函数已损坏:<code>div(24) == 5</code>,而它应该是8</li>
<li>你的第一个三角形数字应该是<code>3</code>,尽管它应该是<code>1</code></li>
</ul>
<p>您可以如下实现工作<code>div</code>:</p>
<pre><code>import math
def divisors(n):
return sum(1 for x in range(1, n+1) if n % x == 0)
</code></pre>
<p>另外,该代码的效率非常低,一些改进建议如下:</p>
<p>不要使用公式计算第<code>n</code>个三角形数,而是使用滚动和:</p>
^{pr2}$
<p>另外,使用<a href="http://en.wikipedia.org/wiki/Divisor#Further_notions_and_facts" rel="nofollow">prime factors to calculate the number of divisors</a>。您可以创建一个主因子缓存以获得最高性能。在</p>