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