Python函数如何判断一个数是否是质数
在Python语言中,判断一个数是否是质数的方法有多种。其中两种常用的方法如下:
1. 试除法:试除法是最基本的质数判断方法,其思想是:如果一个数n不是质数,那么它一定可以分解成两个数a和b,其中1<a≤b<n。假如n不能被2至n-1之间的任意一个整数整除,那么n就是质数。
代码实现:
def is_prime(n):
if n <= 1:
return False
for i in range(2, n):
if n % i == 0:
return False
return True
print(is_prime(5)) # 返回True
print(is_prime(8)) # 返回False
2. 埃氏筛法:埃式筛法是一种时间复杂度为O(nloglogn)的质数判断方法,其思想是:如果一个数n是质数,那么2n、3n、4n、……一定不是质数。因此可以先将2至n之间的所有整数标记为质数,然后从2开始,将每个质数的倍数都标记为合数。最后,未被标记的数就是质数。
代码实现:
def is_prime(n):
if n <= 1:
return False
is_prime_list = [True] * (n+1)
is_prime_list[0] = False
is_prime_list[1] = False
for i in range(2, int(n**0.5)+1):
if is_prime_list[i]:
for j in range(i**2, n+1, i):
is_prime_list[j] = False
return is_prime_list[n]
print(is_prime(5)) # 返回True
print(is_prime(8)) # 返回False
总结:
无论是试除法还是埃氏筛法,其本质都是对每个数字进行遍历,判断其是否为质数。其中,试除法简单易懂,实现简单,适用于小数据集的质数判断,而埃氏筛法适用于高效处理大数据集的质数判断。
