2017-06-19 207 views
1

我正在创建一个函数,当一个数字(这里是X)是Prime时返回True。继续while循环之后返回True

所以我正在检查给定的数字是否可以被整数从2到X-1整除。

但是,while循环在检查返回True时中断。

帮助

def is_prime(x): 
    n = 2 

    if x < 2: 
     return False 

    elif x == 2: 
     return True 

    else: 
     while True and n < x: 
      if x % n == 0: 
       return False 

      else: 
       n += 1 
       return True #--The loop is breaking here-- 
+1

是,从函数返回打破了函数内部循环。循环完成后,您只需要'返回True'。顺便说一句。 '而True和n dhke

回答

1

那么你在循环中使用回statment,所以从方法退出。你需要改变这个循环的逻辑。查看此处: Python Prime number checker

2

你的代码应该是这样的:

def is_prime(x): 
    n = 2 

    if x < 2: 
     return False 

    elif x == 2: 
     return True 

    else: 
     while n < x: 
      if x % n == 0: 
       return False 

      else: 
       n += 1 
     # Put the return True after the loop 
     return True 

print('{}: {}'.format(10, is_prime(10))) 
print('{}: {}'.format(11, is_prime(11))) 
print('{}: {}'.format(0, is_prime(0))) 
print('{}: {}'.format(1, is_prime(1))) 
print('{}: {}'.format(2, is_prime(2))) 
print('{}: {}'.format(113, is_prime(113))) 

输出:

10: False 
11: True 
0: False 
1: False 
2: True 
113: True