2015-05-29 47 views
-4
n = input("enter the no: ") 
def prime(): 
    global count 
    count = 0 
    for i in range(n): 
     if n==0 or n==1: 
      print "it is not prime"    
     elif i==0 or i==1: 
      pass  
     elif n%i==0: 
      count+=1 
    return count 
prime() 
if count>0: 
    print "not prime" 
else: 
    print "it is prime" 

我試圖找到一個給定的否是素數或不是。我對號碼0和1有問題。對於「0」,我得到的結果是「它是素數」。對於「1」,我得到的結果是「它不是素數」和「它是素數」。我嘗試使用「in」運算符而不是「或」。但是我得到了同樣的結果。請讓我知道我在哪裏錯了?Python prime nos_「或」運算符問題

+3

我記得你之前問過這個。不要重複你的問題,而要仔細閱讀代碼並手動執行它的陳述,你可能會發現這個問題。 – TigerhawkT3

+0

非常感謝您的寶貴意見。 –

回答

0

當您輸入'0'時,範圍(n)將返回空列表。所以它給你0是素數。 試試這個代碼:

n = input("enter the no: ") 
def prime(): 
    global count 
    count = 0 
    if n == 0 or n == 1: 
     count = 1 
    for i in range(n): 
     if i==0 or i==1: 
      count = 1 
     elif n%i==0: 
      count+=1 
    return count 
prime() 
if count>0: 
    print "not prime" 
else: 
    print "it is prime" 
+0

謝謝。你的代碼是完美的,除非它不應該計數= 1當我== 0或i == 1,因爲除數不能是0或1. –

+0

Ohhh是的,你是crct。 Tnq :) – rajeshv90

0

如果您正在使用全局變量計數,你沒有歸還。如果從1開始循環,代碼可以變得更清晰。

因此對於素數,它只有一個因子(數字1)。

n = int(raw_input("enter the no: ")) 
count = 0 
def prime(): 
    global count 
    global n 
    count = 0 
    for i in range(1,n):   
     if n%i==0: 
      count+=1 

prime() 
if count==1: 
    print "It is prime" 
else: 
    print "Not prime" 
+0

完美。謝謝。 –

+0

是的。沒有問題。 – Specas