天天看點

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步

  流程圖

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

   使用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

  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後面

  

上一篇: Python函數
下一篇: Python字元串