我的代码:
def sieve(list1):
not_prime = set()
primes = []
for i in range(2, list1+1):
if i in not_prime:
continue
for x in range(i*2, list1+1, i):
not_prime.add(x)
primes.append(i)
return primes
我试图保留非素数并将其改为0.我哪里错了?除了素数之外,输出甚至没有显示任何其他数字。
答案 0 :(得分:0)
那么在那种情况下,你不能在no_prime子句中追加零而不是继续吗?
def sieve(list1):
not_prime = set()
primes = []
for i in range(2, list1+1):
if i in not_prime:
primes.append(0);
continue;
for x in range(i*2, list1+1, i):
not_prime.add(x)
primes.append(i)
return primes
sieve(27)
# output [2, 3, 0, 5, 0, 7, 0, 0, 0, 11, 0, 13, 0, 0, 0, 17, 0, 19, 0, 0, 0, 23, 0, 0, 0, 0]
或者如果这是玩具之外的任何东西,你可能想要查看稀疏数组。