擅长:python、mysql、java
<p>如果你需要一个bruteforce函数来计算除数(也称为tau(n))</p>
<p>这是它的样子</p>
<pre><code>def tau(n):
sqroot,t = int(n**0.5),0
for factor in range(1,sqroot+1):
if n % factor == 0:
t += 2 # both factor and N/factor
if sqroot*sqroot == n: t = t - 1 # if sqroot is a factor then we counted it twice, so subtract 1
return t
</code></pre>
<p>第二种方法是将<code>n</code>分解为其素因子(及其指数)。</p>
<p><code>tau(n) = (e1+1)(e2+1)....(em+1)</code>其中<code>n = p1^e1 * p2^e2 .... pm^em</code>和<code>p1,p2..pm are primes</code></p>
<p>更多信息<a href="http://primes.utm.edu/glossary/xpage/tau.html">here</a></p>
<p>第三种方法更简单易懂,就是用筛子计算<code>tau</code>。</p>
<pre><code>def sieve(N):
t = [0]*(N+1)
for factor in range(1,N+1):
for multiple in range(factor,N+1,factor):
t[multiple]+=1
return t[1:]
</code></pre>
<p>这是它在<a href="http://ideone.com/72H8J">ideone</a>的作用</p>