C++ 中的欧几里得-穆林序列

2025 年 5 月 23 日 | 阅读 4 分钟

在本文中,我们将讨论 C++ 中的欧几里得-穆林序列 (Euclid–Mullin Sequence)。欧几里得-穆林序列是一个由素数组成的序列,该序列是递归定义的。用更专业的术语来说,它的第一项是 2,是序列:2, 3, 7, 43, … 的一个例子。后续的项是通过找到满足特定条件的素数来定义的。在这个序列中,新的一项被定义为序列中所有先前项的乘积加 1 后的最小素因子。

以下是该过程更技术性的概述

  • 然而,无论在序列中选择哪一项,第一项总是 2。
  • 为了找到下一项(因子),需要搜索比最后一项 O(n) 更大的最小素数,然后用它除以最后一项加一,得到一个素数。
  • 如下一节所示,该过程重复进行以创建其他项。

序列的性质

  • 起始点:序列的起始是 2,最小的素数。
  • 增长:由于包含了已获得项的乘积,它自然增长得非常快。
  • 素数分解:它与评估先前项乘积的素因子几乎密切相关,其中序列中的每一项都是通过将所有先前项的乘积加 1 后的最小素因子获得的。

示例

输出

2 3 7 43 13 53 5 6221671 38709183810571 5 3 773 31 3 3 3 5 3 3 191020163    

说明

通过下面的 C++ 程序,可以根据特定的迭代步骤生成一系列素数,这被称为欧几里得-穆林序列。它首先定位一个名为 smallestPrimeFactor 的函数,该函数用于找出一个给定数字的最小素因子。这个函数的思路是:它从 2 开始检查数字的可除性,并扫描到输入数字的平方根。如果都无法整除,则返回该数本身,说明这个数本身就是素数。这个自生成过程由 solve_sequence 函数完成,该函数被调用来分解先前项的乘积加 1 的结果。之后,它递归地计算每一项,作为所有先前项的乘积加 1 的最小素因子。它从定义一个函数 smallestPrimeFactor 开始,该函数识别给定数字的最小素因子。此函数从 2 开始检查可除性,并迭代到输入值的平方根。

主函数被称为 solve_sequence,它接受一个参数来决定将生成的项数。通过这种基于素数分解和乘法的方法,可以轻松地根据不同素数的列表构建欧几里得-穆林序列。

结论

总之,欧几里得-穆林序列是一个数学序列,从最小的素数 2 开始。下一项是通过找到所有先前项的乘积加 1 这个表达式的最小素因子来获得的。每一项都是一个素数,并且由于素数的乘法,我观察到了指数级的增长。这种生成方法突显了确定该性质的先决条件之间的强相互依赖性,即素数、分解方法和迭代计算。除此之外,给定的序列不仅是一个纯粹的数学游戏,而且还说明了与素数相关的计算过程的复杂性,因为序列中的所有项都依赖于所有先前的项。一个简单的规则集合导致了如此分形般的结果,并揭示了数字如何在数论中增长、划分和相交,这使其成为研究数学科学中增长规则的经典范例。


下一主题法里序列 (C++)