Python primes函数提供不正确的输出

时间:2013-10-13 21:08:19

标签: python primes

我被要求创建两个函数,第一个是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)

3 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

这个if语句永远不会成立:

   if False:
       primes.append(n)

重写这样的代码:

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

答案 2 :(得分:0)

此代码错误:

    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”之类的事情。只使用条件。