在 Python 中检查一个数是否为素数
pythonserver side programmingprogramming更新于 2025/10/17 8:12:17
假设我们有一个数 n,我们必须检查 n 是否为素数。当一个数是 pN# + 1 或 pN# – 形式的素数时,该数被称为素数。 1 ,其中 pN# 表示 pN 的素数,即前 N 个素数的乘积。
因此,如果输入为 29,则输出将为 True,因为如果 N=3,则 29 是形式为 pN - 1 的素数,素数为 2*3*5 = 30 和 30-1 = 29。
为了解决这个问题,我们将遵循以下步骤 −
- MAX := 100000
- prime := 大小为 MAX 的列表并用 True 填充
- arr := 一个新列表
- 定义一个函数 SieveOfEratosthenes() 。这将需要
- 对于 pri 在 2 到 int((MAX) 的平方根) + 1 范围内,执行
- 如果 prime[pri] 与 True 相同,则
- 对于 i 在 pri * 2 到 MAX 范围内,在每个步骤中按 pri 更新,执行
- prime[i] := False
- 对于 i 在 pri * 2 到 MAX 范围内,在每个步骤中按 pri 更新,执行
- 如果 prime[pri] 与 True 相同,则
- 对于 pri 在 2 到 MAX 范围内,执行
- 如果 prime[pri] 非零,则
- 在 arr 末尾插入 pri
- 如果 prime[pri] 非零,则
- 从主方法中,执行以下操作 −
- 如果 prime[n] 为零,则
- 返回 False
- product := 1, i := 0
- while product < n, do
- product := product * arr[i]
- 如果 product + 1 与 n 相同或 product - 1 与 n 相同,则
- 返回 True
- i := i + 1
- 返回 False
示例
让我们看下面的实现以便更好地理解 −
from math import sqrt MAX = 100000 prime = [True] * MAX arr = [] def SieveOfEratosthenes() : for pri in range(2, int(sqrt(MAX)) + 1) : if prime[pri] == True : for i in range(pri * 2 , MAX, pri) : prime[i] = False for pri in range(2, MAX) : if prime[pri] : arr.append(pri) def check_primorial_prime(n) : if not prime[n] : return False product, i = 1, 0 while product < n : product *= arr[i] if product + 1 == n or product - 1 == n : return True i += 1 return False SieveOfEratosthenes() n = 29 print(check_primorial_prime(n))
输入
29
输出
True
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/
打印
下一节:C++ STL 中的堆 - make_heap()、push_heap()、pop_heap()、sort_heap()、is_heap、is_heap_until() ❯❮ 上一节:在 Python 中检查某个数字是否为阿喀琉斯数

