比“目前最快的素数生产“快7倍,目前素数生产7倍,用筛法生成素数,生成10


用筛法生成素数,生成10^7以内的素数不到1s

如果允许使用numpy,还可以再快数倍

from time import timet0=time()LIMIT=10**7def primes(n):    p = [1] * (n/2)    for i in xrange(3, int(n**0.5)+1, 2):        if p[i/2]:            p[i*i/2::i] = [0] * ((n-i*i-1)/(2*i)+1)    return [2] + [2*i+1 for i in xrange(1,n/2) if p[i]]def allPrime(maxNum):    aList = range(0, maxNum)    def _do(aPrime):        for i in xrange(aPrime, maxNum, aPrime):            aList[i] = 0        return aPrime    return map(_do,        (i for i in xrange(2,maxNum) if aList[i])        )print len( primes(LIMIT) )# print len( allPrime(LIMIT) )print (time()-t0)'''primes:6645791.07299995422allPrime:6645798.51099991798'''#该片段来自于http://byrx.net

评论关闭