擅长:python、mysql、java
<p>使用Eratosthenes筛:</p>
<pre><code>$ python
Python 2.7.13 (default, Mar 13 2017, 20:56:15)
[GCC 5.4.0] on cygwin
Type "help", "copyright", "credits" or "license" for more information.
>>> def sumPrimes(n):
... i, p, ps, m, sum = 0, 3, [2], n // 2, 2
... sieve = [True] * m
... while p <= n:
... if sieve[i]:
... sum += p
... for j in range((p*p-3)/2, m, p):
... sieve[j] = False
... i, p = i+1, p+2
... return sum
...
>>> from time import time
>>> start = time(); print sumPrimes(2000000); print time() - start
142913828922
0.262000083923
</code></pre>
<p>在我的机器上大约四分之一秒。你知道吗</p>