首先,解釋什么是質數:質數又稱素數。一個大於1的自然數,除了1和它自身外,不能被其他自然數整除的數叫做質數。
那么我們可以采用的方法是,將這個數除2到這個數本身減一,如果這其中除某個數,余數為零,那么這個數就可以判定為非質數(合數),否則就為質數。
至於為什么要從2開始除,這就是一個簡單的數學問題了,因為能被1和本身其他自然數整除的數為質數,那么我們只需實驗能否被1和此數本身之間的自然數整除。自然數:即非負數的整數。
那么我們可以采用python編寫一個小示例來檢驗一個數是否為質數:
def isPrime(number): for i in range(2, number): if number % i == 0: return False return True
調用函數實驗一下,分別用合數10和質數107調用函數:
然而,這種方式是將i遍歷了2到數本身-1,實際不需要如此。當一個數除以比這個數的一半還要大的數時,得到的值就已經是小於2了的非自然數,所以讓這個數去除以大於本身一半的數來驗證是否有自然數的值是不合理的。所以我們只需要讓這個數除以2到本身一半的數來驗證是否是質數。於是,代碼可以改進提高運行性能:
def isPrime(number): for i in range(2, number//2): if number % i == 0: return False return True
結果如上。需注意的是,在第二行range()函數中,只讓i遍歷2到number//2-1,是因為,不需要讓i等於這個數的一半,因為讓這個數除以自身一半的數等於2,那么在i=2時就已經可以判定是否為質數了。