使用Python判斷乙個正整數數是否為素數

2021-09-27 11:18:11 字數 1121 閱讀 7790

**

判定乙個數是否為素數的基本思路:

1、了解素數的定義,乙個正整數n若為素數,則它的約數只能是1和n本身,

2、根據定義,我們需要將這個數除以從2到n-1之間的全部正整數,如果全部都不能整除,則這個數便是素數。若是其中有乙個數能被整除,則這個數是個合數,而不是素數。 因此,用求餘演算法%不失為一種有效的方法。

3、根據上述原理,我們可以用while迴圈來實現

**設計如下:

#輸入需要驗證的整數n,注意,一定要將變數轉換為int,否則運算過程中無法判別n是int還是字串,會報錯。

n =int

(input

("請輸入要判斷的整數:"))

#變數的初始值應該從2開始,因為所有的整數都能被1整除,從1開始意義不大。

i =2

#注意,為什麼i的取值範圍是(2,n/2+)而不是(2,n-1)呢?其實取(2,n-1)也是可以行的,只是運算量比較大而已,浪費資源。因為當i>n/2時,n是不可能整除i的,所以i的最大取值範圍到n/2即可,這樣能大大減少運算量。

while i <=

int(n/2)

+1:if n%i ==0:

#注意,這裡應該使用break語句跳出迴圈,表示一旦在(2,n/2+1)之間的某數能夠被n整除,那麼這個數必定是合數,再迴圈沒有意義,直接跳出

break

#如果i仍然不能被n整除,那麼就自增1,繼續執行求餘迴圈,直到i取到最大值為止

i +=

1#如果在(2,n/2)之間的所有數字都不能被n整除,那麼就可以認定這個數是素數。

else

:print

("%d是素數"

% n)

1)本文的注釋比較長,主要是方便新手閱讀,如果感到不方便,可以刪除中文注釋

2)這個語句沒有考慮n<=1情況,略微有些不嚴謹,但是不影響對於大於1的正整數是否為素數的判斷。如果有必要的話,大家可以嘗試新增乙個對n<=1的判斷,保證邏輯的嚴密性

3)以下是**執行的舉例:

請輸入要判斷的整數:151

151是素數

#輸入151,會報出這個數是素數的結果

請輸入要判斷的整數:155

#輸入155,不會顯示結果,因為155不是素數

判斷乙個正整數是否素數

素數指的是只能被1和自身整除的大於1的整數 對於每個數num,並不需要從2判斷到num 1,這樣效率很低。假若乙個數可以進行因式分解,那麼分解得到的兩個數必將有乙個小於等於sqrt num 另乙個大於等於sqrt num 所以,我們只要遍歷sqrt num 即可,因為在sqrt num 左側找不到約...

Python判斷乙個正整數是否為素數的演算法

先定義乙個有序列表,作為素數池,這樣多次操作的時候可以直接用裡面的素數作為取模的除數,以避免用冗餘的合數來運算和重複性的運算 primepool 2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,79,83,89,97,101,103,1...

PHP判斷乙個變數是否為整數 正整數的方法示例

在php中判斷乙個變數是否為整數 在寫php 的時候遇到這樣乙個小問題 如何判斷乙個變數是否為整數,於是在網上找到了兩個方法來解決,在此做乙個小小的記錄。方法1 num 12.1 返回false if is int num else 這裡用is int程式設計客棧 方法來判斷傳入的引數是否為整數形 ...