簡體   English   中英

為什么我的 Python 程序將第一個識別為質數?

[英]Why my Python program recognizes the number one as Prime number?

我知道以下代碼不是最佳的,我編寫它們只是為了我自己的培訓。 但我不知道為什么數字一 (1) 被識別為質數。 請幫我!

n=input ('Enter number: ')
def prime ():           
     global n    
     try:
       n=int (n)           
       for I in range (2, n):
            if n==1 or n%I==0:
              print (n,"is not prime ")  
              break           
       else:
            print (n,"is Prime")
       if True:     
           n=input ('enters number: ')
           prime ()
     except:
           n=input ('Please enter a number not a word: ')
           prime ()        
prime ()

原因是當 n = 1 時不會評估您的第一個 if 語句,因為范圍 (2,1) 為空。 所以它繼續到 else 語句並打印 1 作為素數。 要解決此問題,您應該將范圍擴大到 (0,n) 並重做 if 語句,如下所示:

n=input ('Enter number: ')
def prime ():
     global n
     try:
       n=int (n)
       for I in range (0, n):
            if n == 1 or (I > 1 and  n%I == 0):
              print (n,"is not prime ")
              break
       else:
            print (n,"is Prime")
       if True:
           n=input ('enters number: ')
           prime ()
     except:
           n=input ('Please enter a number not a word: ')
           prime ()
prime ()

#output:
Enter number: 3
3 is Prime
enters number: 2
2 is Prime
enters number: 1
1 is not prime 

你也可以這樣做

n=input ('Enter number: ')
def prime ():           
    global n    
    try:
        n=int (n) 

        if n == 1:
            print('n is not prime')
        else:        
            for I in range (2, n):
                if n%I==0:
                    print (n,"is not prime ")  
                    break           
            else:
                print (n,"is Prime")
    except:
        n=input ('Please enter a number not a word: ')
prime ()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM