欢迎访问宙启技术站
智能推送

判断一个数是否为素数的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代码。