擅长:python、mysql、java
<p>这是一个未优化的版本,使用的是numpy。在我运行64位版本的Python(2.7)和Numpy(1.7)的8GB笔记本电脑上,它可以在一分钟内计算出10^9的基本因子:</p>
<pre><code>import numpy as np
def sieve(a):
upper_bound = np.int(np.sqrt(a))
is_prime = np.ones((a+1,), dtype=np.bool)
for m in xrange(2, upper_bound+1):
if is_prime[m]:
is_prime[m*m::m] = False
return np.where(is_prime)[0][2:]
>>> sieve(100)
array([ 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59,
61, 67, 71, 73, 79, 83, 89, 97], dtype=int64)
</code></pre>
<p>下面是我的时间安排:</p>
^{pr2}$
<p>你可以把所有的偶数从筛子里去掉,使它运行得快一倍,但是即使有了这个和世界上所有的内存,你仍然需要几分钟来得到所有的素数,直到10^10。在</p>