判断一个数是否为素数,可以通过以下方法:
方法一:遍历判断
def is_prime(n):if n < 2:return Falsefor i in range(2, n):if n % i == 0:return Falsereturn True# 示例使用print(is_prime(5)) # 输出 Trueprint(is_prime(10)) # 输出 False
方法二:优化遍历判断
import mathdef is_prime(n):if n < 2:return Falsefor i in range(2, math.isqrt(n) + 1):if n % i == 0:return Falsereturn True# 示例使用print(is_prime(5)) # 输出 Trueprint(is_prime(10)) # 输出 False
方法三:判断是否被小于等于平方根的素数整除
import mathdef is_prime(n):if n < 2:return Falseif n < 4:return Trueif n % 2 == 0:return Falsefor i in range(3, math.isqrt(n) + 1, 2):if n % i == 0:return Falsereturn True# 示例使用print(is_prime(5)) # 输出 Trueprint(is_prime(10)) # 输出 False
方法四:使用Sieve of Eratosthenes(埃拉托斯特尼筛法)
def sieve_of_eratosthenes(n):prime_list = [True] * (n + 1)prime_list[0] = prime_list[1] = Falsep = 2while p * p <= n:if prime_list[p]:for i in range(p * p, n + 1, p):prime_list[i] = Falsep += 1return prime_listdef is_prime(n):prime_list = sieve_of_eratosthenes(n)return prime_list[n]# 示例使用print(is_prime(5)) # 输出 Trueprint(is_prime(10)) # 输出 False