喜欢吃菠菜
发表于 2018-10-17 09:51:09
凌九霄 发表于 2018-10-17 09:38
首先这个方式确实简洁,效率大概是我那个的2倍多点。我相信,随着范围的增大,速度的优势也会更大。缺 ...
是的。python语言本来就是要牺牲效率而使代码优雅简洁。如果要解决大的数据肯定用python很不科学,这个必须承认。我这个只是匆忙中写的,没有优化。希望只是和大家交流一下。多指教了
喜欢吃菠菜
发表于 2018-11-6 23:45:13
凌九霄 发表于 2018-10-17 09:38
首先这个方式确实简洁,效率大概是我那个的2倍多点。我相信,随着范围的增大,速度的优势也会更大。缺 ...
#筛选法求素数
def getprimes(n):
l=+
i=3
while i*i<=n:
if l!=0:
j=i*i
while n>=j:
l=0
j+=2*i
i+=2
return +!=0]
import time
start=time.clock()
print(getprimes(10000000))
print('时间:%f' % (time.clock()-start))
#这个是加入算法的高效快速的查找方法,1千万内的素数大概只要10秒左右吧,1个亿大概200秒左右吧。参考一下。
考拉熊
发表于 2018-11-7 09:18:43
过来顶一下
凌九霄
发表于 2018-11-7 16:35:39
本帖最后由 凌九霄 于 2018-11-7 17:30 编辑
喜欢吃菠菜 发表于 2018-11-6 23:45
#筛选法求素数
def getprimes(n):
l=+
嘿嘿,还真执着啊,自己有运行过么?或者只注意到时间?
sunrise085
发表于 2019-1-24 11:31:07
这是我写的程序~~不知还能否在压缩运行时间
def sieve(num=200):
fulllist=list(range(2,num+1))
result=[]
while fulllist:
result.append(fulllist.pop(0))
for i in fulllist:
if i%result[-1]==0:
fulllist.remove(i)
return result
uune
发表于 2020-6-24 13:08:22
n = 200
num = #生成2到n之间的数字
for i in num: #遍历num列表
#因为质数的因数只有1和本身,所以从2开始。最小质数是2,x的最大值是n//2
for x in range(2,n//2):
if i*x in num:
#print(i*x, '在内num列表中')
num.remove(i*x)
print('num =',num)