Python判斷一個整數是否為素數


  素數的定義:是指在大於1的自然數中,除了1和它本身以外不再有其他因數的自然數

  即只能被1和自己本身整除的數

  思路及步驟

  1.   給定一個大於2的整數n
  2.   令i=2
  3.     用n除i,得到余數r
  4.        判斷r==0是否成立,如果成立則n不是素數,結束算法;如果不成立則將i的值+1仍然用i表示
  5.       判斷i>(n-1)是否成立,如果成立則n是素數;否則返回第3步

  流程圖

 

   使用while語句實現

n = int(input("請輸入一個數字:"))

i = 2
while True:
    if n < 2:
        print("請輸入一個大於或者等於2的整數")
        break
    elif n == 2:
        print("{}是素數".format(n))
        break
    elif n > 2:
        r = n % i
        i += 1
        if r == 0 or i > n-1:
            if r == 0:
                print("{}不是素數".format(n))
                break
            else:
                print("{}是素數".format(n))
                break

  執行步驟

  如果n=1則退出

  如果n=2則輸出2是素數

  如果n=3則按照以下步驟執行

  1,i=2 n=3 判斷n>2滿足條件執行r=3%2=1

  2,i增加1 i=3

  3,判斷r == 0 結果為False  i > n-1 3>3-1 結果為True 整體結果為True繼續執行if下面語句

  4,判斷r==0結果為False則執行else輸出3是素數

 

  如果n=4則安之以下步驟執行

  1,i=2 n=4判斷n>2滿足條件 執行r=4%2=0

  2,i增加1 i=3

  3,判斷r==0結果為True整體結果為True無需判斷i>n-1整體結果為True

  4,  判斷r==0所以大於4不是素數

 

  以此類推

  輸入任何數字只要可以被2至輸入的整數之間的任意一個數整除即余數為0則可以判斷為非素數

  直到被除數增加到與輸入的數字一致之間還沒有出現可以整數的被除數則判斷該數為素數

 

  使用while循環需要把被除數i從2開始沒執行一次+1 下面使用for循環實現,i的取值為2至輸入的整數n

n = int(input("請輸入一個數字:"))
for i in range(2, n):
    r = n % i
    if r == 0:
        print("{}不是素數".format(n))
        break
else:
    print("{}是素數".format(n))

  實現的效果是一樣的

  本列使用for循環被除數為從2開始至n-1,如果之間有能整數的被除數則可以判斷數字不是素數

  如果一直到n-1還是沒有被整除則認為輸入的n為素數

  注意else的位置是與for循環同級而不是與if同級,如果以if同級則在第一次循環i=2的時候就通過余數來判斷一個數是奇數還是偶數了

  注意:在python中else不一定跟在if后也可以寫在for后面

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM