python求小于n的所有素数_用python求出2000000内所有素数的和?不知怎么写?

展开全部

import itertools

import time

N = 2000000

L = range(N)

def findnxt(s):

flag = 0

for n in itertools.ifilter(None, L[s+1:]):

return n

t0 = time.time()

n = 2

X = int(N ** .5)

while n < X:

for i, x in enumerate(L[::n][1:]):

if i==0: continue

L[x] = 0

n = findnxt(n)

t1 = time.time()

print "Process usage", t1-t0

l = filter(None, L)

print len(l)

#~2113 >python -u "baidu.py"

#~ Process usage 13.3068089485

#~ 148934

#~ >Exit code: 0 Time: 13.651

今天见5261到另一个代码4102,非常棒1653(sorry, 忘记了出处)#!/usr/bin/python

# encoding: utf-8

import itertools

import time

N = 2000000

def clear(aPrime,aList,maxNum):

for i in xrange(aPrime, maxNum, aPrime):

aList[i]=0

def allPrime(maxNum):

aList = range(0,maxNum)

prime = []

for i in xrange(2,len(aList)):

if aList[i] != 0:

prime.append(aList[i])

clear(aList[i],aList,maxNum)

return prime

t0 = time.time()

primelist = allPrime(N)

t1 = time.time()

print len(primelist ),

print '[%s .. %s]' %(

','.join(map(str,

primelist [:10])),

','.join(map(str,

primelist [-10:])),

)

print "Process usage", t1-t0

#~ >python -u "baidu.py"

#~ 148933 [2,3,5,7,11,13,17,19,23,29 .. 1999853,1999859,1999867,1999871,1999889,1999891,1999957,1999969,1999979,1999993]

#~ Process usage 1.31931495667

#~ >Exit code: 0 Time: 1.449

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值