我被这个例子困住了。我不知道如何在while中设置正确的逻辑操作。
以下是文字:
使用此部分代码查找低于给定限制的所有素数。填空白。 要检查素数,您必须将所有以前的素数分开。
def primes(n):
p = []
for k in __________:
i = 0
while i < ________ and __________ != 0:
i += 1
if i == _________:
p.append(____)
return p
这是我的尝试:
def prastevila(n):
p = []
for k in range(2, n + 1):
i = 0
while i < k and k % (i + 1) != 0:
i += 1
print i
if i == 0:
p.append(k)
return p
答案 0 :(得分:2)
这是我的解决方案,已经在列表素数中考虑:
def prastevila(n):
p = []
for k in range(2, n + 1):
i = 0
while i < len(p) and k % p[i] != 0:
i += 1
if i == len(p):
p.append(k)
return p
#In [2]: prastevila(20)
#Out[2]: [2, 3, 5, 7, 11, 13, 17, 19]
答案 1 :(得分:1)
不确定while
有什么用处(我将其用于简单的if
)。这是找到素数的可怕方法,但确实有效:
def primes(n):
p = []
for k in range (2, n + 1):
i = 0
while i < 1 and all (k % p for p in p) != 0:
i += 1
if i == 1:
p.append(k)
return p
primes(100)
的输出:
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
与以下内容相同:
def primes(n):
p = []
for k in range (2, n + 1):
if all (k % p for p in p):
p.append(k)
return p
但我必须填补空白。
答案 2 :(得分:1)
使用香蕉煎饼的另一种选择:
def primes(n):
p = []
for k in range(2, n + 1):
i = 0
while i < len('banana') and 'pancakes' != 0:
i += 1
if i == 6 * int(all(k % p for p in p)):
p.append(k)
return p
另一个使用草莓酥饼:
def primes(n):
p = []
for k in ('strawberry',):
i = 0
while i < len('short') and 'cake' != 0:
i += 1
if i == i:
p.append((lambda t: p.extend(t[:-1]) or t[-1])([a for a in range(2, n + 1) if all(a % c for c in range(2, a))]))
return p
答案 3 :(得分:0)
因为填充空白并且必须使用所示的代码,并且必须除以已经找到的素数。
def primes(n)
p = []
for k in range(2, n):
i = 0
while i < len(p) and (k % p[i]) != 0:
i += 1
if i == len(p):
p.append(k)
return p
只要找到划分候选人的主要值,while就会结束。 这确实有效,因为我尝试了它并在返回后打印了p。