在 Python 中检查数字是否为质数
![在 Python 中检查数字是否为质数](/img/Python/feature-image---python-isprime.webp)
素数可以被描述为一个自然数,除了数字 1 和它本身之外,没有其他正除数。数 1 不计入素数列表。
本教程将讨论可用于检查数字是否为质数的不同方法。
在 Python 中使用简单迭代法确定质数
在这个方法中,我们使用一个简单的迭代方法,使用 for
或 while
循环。遍历从 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 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