素數的定義:是指在大於1的自然數中,除了1和它本身以外不再有其他因數的自然數
即只能被1和自己本身整除的數
思路及步驟
- 給定一個大於2的整數n
- 令i=2
- 用n除i,得到余數r
- 判斷r==0是否成立,如果成立則n不是素數,結束算法;如果不成立則將i的值+1仍然用i表示
- 判斷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后面