Python 新手求助

LVMJIE 2014-10-27 09:51:57
求前2000000个素数和
import math

sum=0

for num in range(2,2000000):
for i in range(2,int(math.sqrt(num)+1)):
if num % i == 0:
break
else:
sum += num
print sum

能不能再第二个for之前加一个筛选 筛除偶数 会不会使程序快一点
...全文
212 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
The_Third_Wave 2014-10-29
  • 打赏
  • 举报
回复
1、xrange步长选2,去掉除2以外的偶数; 2、进一步检查能不能被3,5整除; 3、只求一次平方根,不要多次求; 3、不要开方!用乘法检查,做乘法比开方快很多(对比第三步); 4、。。。 上门说的,有些需要配合,有些策略略冲突,都是优化。
LVMJIE 2014-10-29
  • 打赏
  • 举报
回复
我的意思是这样的 偶数(除去2)一定不是质数 那就先筛掉他们 在剩下的奇数里做运算 能不能快一点
勿语星空丶 2014-10-29
  • 打赏
  • 举报
回复
楼主说了是新手 4楼回答太详细了, 好吧我也求助我的小爬虫去~~
The_Third_Wave 2014-10-28
  • 打赏
  • 举报
回复
把经典算法用python改写即可
iasky 2014-10-28
  • 打赏
  • 举报
回复
老题了,好多答案,参考:http://zhidao.baidu.com/question/552129510269099572.html
#!/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
panghuhu250 2014-10-28
  • 打赏
  • 举报
回复
里面的循环只要试除所有的<=sqrt(n)的素数就可以.
Double_QT 2014-10-27
  • 打赏
  • 举报
回复
试试在第一个range后面加步长 例如range(2,2000001,2)
jeky_zhang2013 2014-10-27
  • 打赏
  • 举报
回复
像这样很多的数据遍历,用xrange快点

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧