Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何替换素数生成器列表中的参数_Python_List_Replace_Primes - Fatal编程技术网

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)