Python 判斷質數的另一種方法
阿新 • • 發佈:2022-04-06
質數就是大於等於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的無謂的計算。