2015-05-04 84 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

相關問題