使用此部分代码查找低于给定限制的所有质数

时间:2014-02-19 18:53:53

标签: python primes

我被这个例子困住了。我不知道如何在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

4 个答案:

答案 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。