2013-10-13 40 views
0

我被要求创建两个功能,第一is_divisible(N,素数)来检查数整除任何其他号码的黄金Python的素数的功能,给予不正确的输出

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

我不知道为什么,但我不能解决如何让素数显示。关于我做错了什么显而易见?

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) 
+0

提示:检查'find_primes'中的if语句 – oefe

+0

回滚,因为新的编辑几乎删除了此问题的任何上下文。 – viraptor

回答

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) 
0

这个if语句永远不会为真:

if False: 
     primes.append(n) 

改写这样的代码:

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

这段代码是错误的:

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

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

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

Python将0计算为False,否则所有数字计算为0。 所以,没有必要像“if condition == True”这样做。只要有条件就使用。