2016-09-19 48 views
0

我知道這個問題被問了太多次,但我不是在尋找最快的算法。我只想知道我的代碼有什麼問題,因爲它有問題。Python - 檢查它是否是質數

import math 

def is_prime(number): 
    for i in range (2, 1+ int(math.sqrt(number))): 
     if number % i == 0: 
      return 0 
     else: 
      return 1 

choice = int(input("Check if it's prime: ")) 
if is_prime(choice): 
    print ("{} is a prime number".format(choice)) 
else: 
    print ("{} is not a prime number".format(choice)) 

如果我測試這個程序對於大多數數字將返回正確的反應,但如果我檢查所有平方數它會說,這是一個素數。所以,有什麼建議我做錯了?

+0

啊,是的,我知道我所做的只是幸福路,我甚至沒有檢查用戶的輸入,但是讓我們現在略過並假設我總是輸入'integer> = 2' – narn

回答

4

您正在循環的第一次迭代中立即返回...始終。

而是隻有立即返回,當你知道這是不是一個素數,否則繼續下去:

def is_prime(number): 
    for i in range (2, 1+ int(math.sqrt(number))): 
     if number % i == 0: 
      return 0 
    return 1 
+0

哦,現在我明白了。感謝您的時間 – narn

+0

不客氣。 – trincot