📜  在 python 中检查素数(1)

📅  最后修改于: 2023-12-03 15:37:27.335000             🧑  作者: Mango

在 Python 中检查素数

素数是只能被1和自己整除的正整数。在 Python 中,我们可以使用不同的方法来检查一个数是否为素数。

常见的方法
循环判断

我们可以使用循环来判断一个数是否为素数。具体的思路是:从2开始,一直到该数的开平方取整为止,检查该数是否能被任何一个范围内的数整除。如果不能,那么这个数就是素数。

以下是实现这个方法的 Python 代码:

import math

def is_prime(num):
    if num < 2:
        return False
    for i in range(2, int(math.sqrt(num))+1):
        if num % i == 0:
            return False
    return True

我们使用 math.sqrt 函数来计算该数的开平方,int 函数将其转化为整数,以便用于 for 循环的范围。注意,如果该数小于2,就一定不是素数。这是由于在数学上,1不是素数。

现在,我们可以使用这个函数来检查一个数是否为素数:

>>> is_prime(7)
True
>>> is_prime(15)
False
列表筛选

另一种方法是使用列表筛选。具体来说,我们可以生成一个由1至该数的所有数组成的列表,然后从中筛选出素数。

以下是实现这个方法的 Python 代码:

def is_prime(num):
    if num < 2:
        return False
    for i in range(2, num):
        if num % i == 0:
            return False
    return True

def get_primes(n):
    primes = []
    for i in range(2, n+1):
        if is_prime(i):
            primes.append(i)
    return primes

我们先定义了一个 is_prime 函数,它与前面使用的函数相同。然后,我们定义了一个 get_primes 函数,用于从范围内的所有数字中提取素数。我们使用 range 函数生成长度为 n-1 的数字序列。然后,我们按顺序检查每个数字是否素数。如果是,我们将其添加到 primes 列表中。最后,我们返回它。

现在,我们可以使用 get_primes 函数来找到任意范围内的素数:

>>> get_primes(10)
[2, 3, 5, 7]
>>> get_primes(20)
[2, 3, 5, 7, 11, 13, 17, 19]
总结

我们学习了两种常见的方法,在 Python 中检查素数。如果你需要检查一个大量的数字是否为素数,第一种方法可能更有效率,因为它可以在检查一个数是否为素数后立即重复使用它。而如果你只是需要在一定范围内找到素数,第二种方法可能更方便,因为它可以一次生成所有的素数。