Eratosthenes蟒蛇筛

时间:2014-11-25 18:28:16

标签: python primes

我必须使用以下内容来创建程序

create an empty list P to hold primes     
create a sieve list S of length n + 1. Set every element in S to True    
ITERATE over p from 2 to n  
    IF the element at p in S is True   
        add the element at p in S to P   
        generate multiples m of p up to n in increments of p   
             set the elements at all m in S to False   
return P

到目前为止,我已经生成了以下代码,但是当返回P时我得到一个空列表。 关于什么是错的任何想法?

def prime(n):
  P = []
  s = [n+1]
  s == True
  for p in range(2, n):
      if p in s == True:
          p.append(P)
          for m in range(p*p, n+1, p):
              m == False
  return P

1 个答案:

答案 0 :(得分:2)

您没有创建s作为n+1 True的列表;您使用一个元素n+1创建了一个列表,然后询问它是否为True(并忽略答案)。试试这个:

s = [True for x in xrange(n+1)]

你也永远不会任何事情到s,但一次只做一件事。