Python 如何替换素数生成器列表中的参数
所以我今晚花了很多时间在组装这个基于埃拉托斯烯筛的主发电机上。代码如下:Python 如何替换素数生成器列表中的参数,python,list,replace,primes,Python,List,Replace,Primes,所以我今晚花了很多时间在组装这个基于埃拉托斯烯筛的主发电机上。代码如下: n = input("What number do you want to calculate to? ") import time start = time.time() def pr(l): ln = l+1 p = range(2, ln) for k in p: f = range(k, ln, k) for f in f[1:]: if f in p:
n = input("What number do you want to calculate to? ")
import time
start = time.time()
def pr(l):
ln = l+1
p = range(2, ln)
for k in p:
f = range(k, ln, k)
for f in f[1:]:
if f in p:
p.remove(f)
return p
print pr(n)
end = time.time() - start
print "This took: ",end
我想我想做的主要事情是加快速度。我很确定将
p.remove(f)
函数更改为p[f]=0
会加快速度,但这不起作用。有人知道我做错了什么吗?还是有一种更快的方法可以做到这一点呢?以下是我对埃拉托斯烯筛的看法:
def primes(n): # sieve of eratosthenes
ps, sieve = [], [True] * (n + 1)
for p in range(2, n + 1):
if sieve[p]:
ps.append(p)
for i in range(p * p, n + 1, p):
sieve[i] = False
return ps
请计时并让我知道它与您的版本相比如何。这是哪种语言?标记语言yes,do
p=range(2,l+1);对于范围内的k(2,数学sqrt(l)+1):对于范围内的f(k*k,l+1,k):如果p中的f:p.remove(f)代码>。