Python 如何使素数的求和更快? def为素数(x): 如果以前有人问过这个问题:

Python 如何使素数的求和更快? def为素数(x): 如果以前有人问过这个问题:,python,primes,Python,Primes,以上链接中列出了多种方法。您可能还会发现此链接很有用: 你也可以考虑用Cython来优化这一点。 < P > ErasoStes的筛选器列举了素数,和/代码>累加它们;首先列出从2到n的数字,将它们标记为素数,然后按顺序扫描列表,在每个素数处停止以标记其倍数组合,按顺序收集素数 def is_prime(x): if x<2: return False elif x%2==0: if x==2: return T

以上链接中列出了多种方法。您可能还会发现此链接很有用:


你也可以考虑用Cython来优化这一点。

< P > ErasoStes的筛选器列举了素数,<代码>和/代码>累加它们;首先列出从2到n的数字,将它们标记为素数,然后按顺序扫描列表,在每个素数处停止以标记其倍数组合,按顺序收集素数

def is_prime(x):
    if x<2:
        return False
    elif x%2==0:
        if x==2:
            return True
        else:
            return False
    else:
        for i in range(3,x+1,2):
            if x%i==0 and i==x:
                return True
                break
            elif x%i==0:
                return False
                break


def sum_primes(m):
    total=0
    for i in range (3,m,2):
        if is_prime(i):
            total+=i
    return total+2

print sum_primes(2000000)
我将把它留给您来翻译成Python


如果你对素数编程感兴趣,我在我的博客上谦虚地推荐你。

看一下。如果您想了解如何改进特定代码,可以找到一些Python实现,请访问。如果你想要一个更快的算法,这已经被问了数百次了,这就是为什么相关问题侧栏中充满了明显的重复。
function sumPrimes(n) # sum of primes less than n
    sum, sieve := 0, makeArray(2..n, True)
    for p from 2 to n
        if sieve[p]
            sum := sum + p
            for i from p*p to n step p
                sieve[i] = False
    return sum