在 Python 中检查数字是否为质数

Vaibhhav Khetarpal 2023年1月30日 2021年7月12日
  1. 在 Python 中使用简单迭代法确定质数
  2. 使用 sympy.isprime() 函数检查给定数是否是 Python 中的素数
在 Python 中检查数字是否为质数

素数可以被描述为一个自然数,除了数字 1 和它本身之外,没有其他正除数。数 1 不计入素数列表。

本教程将讨论可用于检查数字是否为质数的不同方法。

在 Python 中使用简单迭代法确定质数

在这个方法中,我们使用一个简单的迭代方法,使用 forwhile 循环。遍历从 2 开始一直到 K/2 的数字,并检查这些数字中是否有任何一个能除以 K

如果找到符合此条件的数字,则返回 False。另一方面,如果所有数字都不符合此标准,则给定数字 K 是素数,并返回 True 值。

下面的代码使用简单的迭代方法来检查给定的数字是否是 Python 中的质数。

k = 13

# 1 not being a prime number, is ignored
if k > 1:
    for i in range(2, int(k/2)+1):
         if (k % i) == 0:
            print("It is not a prime number")
            break
    else:
        print("It is a prime number")

else:
    print("It is not a prime number")

输出:

It is a prime number

你可以通过应用一些更改来优化上面的代码。进行以下优化以使代码更快:

*检查直到达到给定数字的根,而不是检查确切的数字。这个过程基本上消除了当数字 K 的较大因数是已经迭代过的较小因数的倍数时出现的冗余。

*所有素数都以 6n±1 的形式存在,只有 2 和 3 是例外。因此,检查给定数与 2 和 3 的整除性,然后检查每个具有 6n±1 形式的数是更有效的解决方案。

下面的代码使用优化的简单迭代方法来检查给定的数字是否是 Python 中的质数。

def isitPrime(k):
    if k==2 or k==3: return True
    if k%2==0 or k<2: return False
    for i in range(3, int(k**0.5)+1, 2):
        if k%i==0:
            return False

    return True
print(isitPrime(13))

输出:

True

优化的迭代方法使其比简单的迭代方法更快、更高效约 30%。

使用 sympy.isprime() 函数检查给定数是否是 Python 中的素数

SymPy 是 Python 中的一个库,用于实现符号数学。它旨在成为一个包含所有基本功能的简单计算机代数系统 (CAS)。此方法需要安装此模块,只需使用 pip 命令即可下载。

sympy.isprime()SymPy 模块下的内置函数,可用于检查可能的素数。它是一个直接函数,如果要检查的数字是素数,则返回 True,如果要检查的数字不是素数,则返回 False

下面的代码使用 sympy.isprime() 函数来检查给定的数字是否是 Python 中的素数。

from sympy import *
  
isprime(8)
isprime(11)

输出:

False
True

我们应该注意,任何负数都不属于素数的标准。如果针对它检查任何负数,这些函数的输出可能会有所不同。

Vaibhhav Khetarpal avatar Vaibhhav Khetarpal avatar

Vaibhhav is an IT professional who has a strong-hold in Python programming and various projects under his belt. He has an eagerness to discover new things and is a quick learner.

LinkedIn