1. 程式人生 > 其它 >Python 判斷質數的另一種方法

Python 判斷質數的另一種方法

質數就是大於等於2且只能被它本身及1整除的數,百度上關於質數的性質和相關的公式還有很多,不過有點高深難懂,尤其是對我這個數學不好的人來說。
網上python判斷質數的方法大多是下面這種:

from math import sqrt
def is_prime(n):
    if n == 1:
    	print("此數為不質數")
        return False
    for i in range(2, int(sqrt(n))+1): #或者 for i in range(2, n//2+1):
        if n % i == 0:
        	print("此數不為質數")
            return False
    print("此數為質數")
    return True

但是我在做這題的時候沒有看網上的程式碼,於是開闢了另一個方法。
有一組數是很神奇的:[2,3,5,7]。這四個數加上一些運算子號可以生出任意的數。比如8=2×2×2, 6=2×3, 14=2×7.....
所以,只要被求的數不能被這組數中的每一個數整除,此數就為質數。基本程式碼如下:

def is_prime(n):
    ls = [2, 3, 5, 7]
    for i in ls:
        if n == i:
            print("此數為質數")
            return True
        if not n % i:
            print("此數不為質數")
            return False
    print("此數為質數")
    return True
#return的作用:判斷結束後即刻退出函式,避免重複判斷

for i in range(10):
    n = int(input("請輸入一個整數:"))
    is_prime(n)

仔細想一想,其實這兩個方法是一樣的,第一塊程式碼的range範圍是包含[2,3,5,7]的,甚至可以再精細一點,比如當n=8的時候,第一塊程式碼的範圍區間是[2,3],這樣就避免了後面5和7的無謂的計算。