python怎么判断是否为质数

  • Post category:Python

Python 判断一个数是否为质数的方法是使用循环来遍历该数所有比它小的数,查看余数是否为0,如果都不为0则为质数,如果有一个数其余数为0,则不是质数。

以下是一个实现判断一个数是否为质数的 Python 代码示例:

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

print(is_prime(2))  # 运行结果:True
print(is_prime(3))  # 运行结果:True
print(is_prime(4))  # 运行结果:False
print(is_prime(5))  # 运行结果:True

上面的代码中,对is_prime()函数进行实现。第一步对小于2的数直接返回False;第二步通过for循环从2开始遍历到num减1,判断num是否能被循环中的数字整除,如果能整除则返回False,否则返回True判断该数是质数。

另外,利用Python的Sieve of Eratosthenes算法也可以实现判断质数的功能,它通过筛选去除质数的所有倍数,并保留未筛选的数,最终未被去除的数即为所求的质数。以下是基于Sieve of Eratosthenes算法实现的Python代码:

def sieve_of_eratosthenes(n):
    if n < 2:
        return []
    nums = [True for _ in range(n+1)]
    nums[0], nums[1] = False, False
    for i in range(2, int(n ** 0.5) + 1):
        if nums[i]:
            for j in range(i * i, n + 1, i):
                nums[j] = False
    return [i for i in range(n+1) if nums[i]]

print(sieve_of_eratosthenes(20))  # 运行结果:[2, 3, 5, 7, 11, 13, 17, 19]

上面代码中def sieve_of_eratosthenes(n)函数主要实现了Sieve of Eratosthenes算法,从2到根号n的循环中,如果nums[i]为True即表示i是质数,将i的所有倍数设为False,最后返回0到n中未被筛选的数。

以上就是判断质数的两种方法,在平时的Python学习、项目开发、面试等场合中都具有很高的价值。