2015-05-04 57 views
0

这里的初学者。我运行这个Python代码,它应该可以找到并打印任何数字的主要因素(在本例中为16),但是在控制台中什么都没有出现。帮帮我!当我运行这个素数因子程序时,什么也没有发生

def is_not_prime(x): 
    for i in range(2,x): 
     if x % i == 0: 
      return True 
      break 
     else: 
      return False 

def prime_factors(n): 
    for i in range(2,n): 
     if n % i == 0: 
      x = i 
      primes.append(x) 
      break 
     y = n/x 
     return y 

primes = [] 

def main(y): 
    while is_not_prime(y): 
     prime_factors(y) 
    primes.append(y) 
    print(primes) 

main(16) 

回答

0

看看这个:

while is_not_prime(y): 
    prime_factors(y) 

16不是素数,所以你是停留在一个无限循环while True这里。

如果你想摆脱这个循环,你将需要以某种方式改变循环内的y

+0

我以为我在'prime_factors'函数内改变'y'? – conjenks

+2

在'prime_factors'函数的本地范围内更改'y',对'main'函数的本地范围内的'y'没有影响。 – wim

+0

好的,谢谢。我通过在'while'循环中放置实际函数'prime_factors'并在其末尾修改'y'来解决这个问题,但现在我发现实际的程序没有返回正确的答案,所以我必须继续观察它。我很感激帮助。 – conjenks

相关问题