判断一个数是否为素数的Python代码
发布时间:2023-12-04 11:13:41
判断一个数是否为素数可以通过以下方法:
方法一:暴力检查法
暴力检查法是最直观的一种方法,即遍历从2到这个数的平方根的所有数,看是否能够整除这个数。如果存在能够整除的数,那么这个数就不是素数;如果不存在能够整除的数,那么这个数就是素数。
下面是使用暴力检查法判断一个数是否为素数的Python代码:
def is_prime(n):
# 如果小于2,则不是素数
if n < 2:
return False
# 遍历2到n的平方根
for i in range(2, int(n ** 0.5) + 1):
# 如果存在可以整除n的数,则不是素数
if n % i == 0:
return False
# 否则是素数
return True
# 使用示例
num = 17
if is_prime(num):
print(f"{num}是素数")
else:
print(f"{num}不是素数")
输出:
17是素数
方法二:优化暴力检查法
在暴力检查法的基础上,可以进行一些优化。例如可以只遍历2到n的平方根,并且只需要判断奇数。因为一个合数一定可以分解为两个数的乘积,其中一个数必然小于或等于它的平方根。
下面是优化后的暴力检查法判断一个数是否为素数的Python代码:
def is_prime(n):
# 如果小于2,则不是素数
if n < 2:
return False
# 如果是2或者3,是素数
if n == 2 or n == 3:
return True
# 如果是偶数,不是素数
if n % 2 == 0:
return False
# 遍历奇数2到n的平方根
for i in range(3, int(n ** 0.5) + 1, 2):
# 如果存在可以整除n的奇数,则不是素数
if n % i == 0:
return False
# 否则是素数
return True
# 使用示例
num = 25
if is_prime(num):
print(f"{num}是素数")
else:
print(f"{num}不是素数")
输出:
25不是素数
方法三:埃拉托斯特尼筛法
埃拉托斯特尼筛法是一种生成素数的算法,基于如下观察:如果一个数是素数,那么它的倍数一定不是素数。因此,我们可以从2开始,将2的倍数全部标记为合数,然后继续从未被标记的最小的数开始,对其倍数进行同样的操作。如此循环下去,直到到达指定的范围,剩下的未被标记的数就是素数。
下面是使用埃拉托斯特尼筛法判断一个数是否为素数的Python代码:
def is_prime(n):
# 如果小于2,则不是素数
if n < 2:
return False
# 初始化标记数组,默认认为所有的数都是素数
is_prime = [True] * (n + 1)
is_prime[0] = is_prime[1] = False
# 从2开始将倍数全部标记为合数
for i in range(2, int(n ** 0.5) + 1):
if is_prime[i]:
for j in range(i * i, n + 1, i):
is_prime[j] = False
# 如果n为素数,则返回True,否则返回False
return is_prime[n]
# 使用示例
num = 73
if is_prime(num):
print(f"{num}是素数")
else:
print(f"{num}不是素数")
输出:
73是素数
以上就是判断一个数是否为素数的三种方法及其对应的Python代码。
