Python函数:如何判断一个数是否是质数?
发布时间:2023-07-01 13:30:20
判断一个数是否是质数可以通过以下几种方法来实现。
方法1: 试除法
质数是指只能被1和自身整除的数。因此,我们可以通过对一个数n进行从2到n-1的试除,判断是否有能够整除n的数。如果有能够整除n的数,那么n不是质数;如果没有能够整除n的数,那么n是质数。
def is_prime(n):
if n < 2:
return False
for i in range(2, n):
if n % i == 0:
return False
return True
方法2: 开方法
如果一个数n不是质数,那么它一定可以写成两个数的乘积形式,其中一个数小于等于sqrt(n)。所以我们可以只对2到sqrt(n)的数进行试除,判断是否有能够整除n的数。
import math
def is_prime(n):
if n < 2:
return False
for i in range(2, int(math.sqrt(n)) + 1):
if n % i == 0:
return False
return True
方法3: 筛选法
筛选法是一种高效的找出一定范围内所有质数的方法。我们可以创建一个长度为n+1的布尔类型数组is_prime,初始将数组中的值都设为True。然后将2开始到n的范围内所有能被整除的数的对应位置设为False。最后,is_prime中值为True的索引就是质数。
def sieve_of_eratosthenes(n):
is_prime = [True] * (n + 1)
is_prime[0] = False
is_prime[1] = False
for i in range(2, int(math.sqrt(n)) + 1):
if is_prime[i]:
for j in range(i * i, n + 1, i):
is_prime[j] = False
return is_prime
def is_prime(n):
if n < 2:
return False
primes = sieve_of_eratosthenes(n)
return primes[n]
这些方法都可以用来判断一个数是否是质数。需要注意的是,在使用试除法和开方法时,我们只需要判断2到sqrt(n)的范围内的数即可,而使用筛选法则能够判断任意范围内的质数。
