我必须使用以下内容来创建程序
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
答案 0 :(得分:2)
您没有创建s
作为n+1
True
的列表;您使用一个元素n+1
创建了一个列表,然后询问它是否为True
(并忽略答案)。试试这个:
s = [True for x in xrange(n+1)]
你也永远不会做任何事情到s
,但一次只做一件事。