0

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

3 回答 3

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)
于 2013-10-13T21:15:31.800 回答
0

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

   if False:
       primes.append(n)

像这样重写代码:

  if is_divisible(n,primes)==False:
       primes.append(n)
于 2013-10-13T21:15:36.300 回答
0

这段代码是错误的:

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

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

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

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

于 2013-10-13T21:21:48.523 回答