【问题标题】:Python primes function giving incorrect outputPython primes 函数给出不正确的输出
【发布时间】:2013-10-13 21:08:18
【问题描述】:

我被要求创建两个函数,第一个是 is_divisible(n,primes) 来检查一个数字是否可以被素数中的任何其他数字整除

然后是第二个,它将使用第一个查找特定范围内的所有素数。

我不知道为什么,但我不知道如何让素数显示出来。有什么明显的我做错了什么吗?

def is_divisible(n, primes):    
    for p in primes:
        if n % p == 0:
            return True
        else:
            return False        

def find_primes(N):  
    primes=[]
    for n in range(2, N+1):
        is_divisible(n,primes)
        if False:
            primes.append(n)
    print(primes)

find_primes(20)

【问题讨论】:

  • 提示:检查find_primes中的if语句
  • 回滚了,因为新的编辑几乎删除了这个问题的任何上下文。

标签: python primes


【解决方案1】:
def is_divisible(n, primes):    
    for p in primes:
        if n % p == 0:
            return True
    return False  # Only return False if no matches      

def find_primes(N):  
    primes=[]
    for n in range(2, N+1):
        if not is_divisible(n,primes)
            primes.append(n)
    print(primes)

print find_primes(20)

【讨论】:

    【解决方案2】:

    这个 if 语句永远不会是真的:

       if False:
           primes.append(n)
    

    像这样重写代码:

      if is_divisible(n,primes)==False:
           primes.append(n)
    

    【讨论】:

      【解决方案3】:

      这段代码是错误的:

          is_divisible(n,primes)
          if False:
              primes.append(n)
      

      您应该检查 if 条件内的可分性。试试这个:

          if not is_divisible(n,primes):
              primes.append(n)
      

      Python 将 0 计算为 False,否则计算所有数字。 因此,没有必要执行“if condition == True”之类的操作。使用 if 条件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-13
        • 2013-07-30
        • 1970-01-01
        • 1970-01-01
        • 2022-11-14
        相关资源
        最近更新 更多