C++ 中的三十边形数

2025年6月14日 | 阅读 7 分钟

多边形数多年来一直引起人们的兴趣。其中一种称为三十二边形数,与 32 边形(一种有 32 条边的形状)相关。如果我们按照特定的模式排列点,这个集合中的所有数字都可以用完全填充这个 32 边形来表示。三角形数和正方形数是多边形数大家族中的一些例子。

多边形数的概念可以追溯到古希腊数学家。他们研究了数字与形状结合会发生什么。如果任何给定的形状有 s 条边,我们可以计算 1、2、3 等等对象,所以我们可以谈论第 n 个三角形数、第 n 个正方形数等。

多边形数在许多不同领域都有用,例如计算机科学,它们有助于创建二次方增长的高效算法序列(就像我们用于三十二边形数的算法一样),并且在这方面特别好。它们也经常出现在数论证明中,以至于许多数学家认为它们值得研究。

  • 数学家使用一个标准公式来查找第 n 个三十二边形数。该公式来自用于多边形数的公式。一个 s-边形数的公式是(((s - 2) * n^2) - ((s - 4) * n)) / 2。 当我们对一个 32 边形进行同样的操作时,我们得到 (30 * n^2 - 28 * n) / 2。它可以简化为 15 * n^2 - 14 * n。使用此公式,我们可以在不逐一查找之前所有数字的情况下找到该序列中的任何数字。
  • 如果我们将在公式中将 n = 1,我们将得到序列中的第一个数字:15 * (1)^2 - 14 * (1) = 1。为了找到序列中的第二个数字,我们将 n = 2 代入公式:15 * (2)^2 - 14 * (2) = 32。遵循相同的模式,我们可以计算出当 n=3 时,公式给出 93,当 n=4 时,给出 184,依此类推,永无止境。这些数字将始终等于如果我们能够排列 32 边形并计算其中有多少个点所得到的数字。
  • 由于该公式只有基本的减法和乘法,因此我们可以在恒定时间内找到序列中的任意项。这意味着与其他方法相比,例如将每个项相加或使用循环逐个计算,它不需要太多计算机资源。这一点非常重要,特别是当我们想要找到一个值取决于其大小并且在计算机和数学中有许多用途的东西时。该公式立即给出答案,而无需进行更多数学运算,因为它具有 O(1) 的复杂度。
  • 如果我们想知道公式为什么有效,我们必须看看它的组成部分。当我们对 n 进行平方时,15*n² 的增长速度比我们添加或减去的任何其他东西都要快得多。为了使我们的值与圆周围绕 32 个点的模式中的值匹配,我们必须在此公式的每一项中添加一些东西,这个东西是 -14*n。最后,如果我们想知道每一层有多少东西(取决于我们正在查看的模式,这些东西可能是边、点或其他东西),我们除以 2;这就是为什么我们在公式末尾有一个 /2。

这种数学关系表明了数字与形状是如何相互关联的。即使它乍一看很奇怪,但它基于计数和排序。我们可以通过类似的方式为其他形状制作类似的公式,即使它们看起来与多边形不同,例如,具有一百条边的多边形或具有七条边的多边形。这很有趣,因为它表明几何学和数字工作原理的研究以一种很大的方式(数论)相互关联。人们已经知道了很长时间,即使现在,我们仍然没有完全了解这种联系。

性质

C++ 中三十二边形数的几个属性如下

二次方增长

  • 三十二边形数的增长是二次方的,即随着 n 的增加,连续项之间的差值也增加。这是因为
    T(n) = 15n² - 14n
  • 在这个公式中,由于 n 的最高幂是 2,因此项的增长速度比 n 的最高幂为 1(线性增长)或小于 1 的任何数字(包括非整数)的序列快得多。
  • 由于三十二边形数中的数字增长很快,因此它们对于查看二次函数和快速指数增长的形状模式很有用。

与其他多边形数的关系

  • 三十二边形数是一种多边形数。我们可以使用与计算其他 s-边形数类似的公式来计算它们
    T(n) = ((s - 2) * n² - (s - 4) * n) / 2
  • 如果我们对 s 使用不同的值应用此公式,我们可以获得其他类型多边形数,例如三角形数、正方形数、五边形数等。
  • 该公式向我们展示了三十二边形数、三角形数和正方形数之间的某种联系。

递推关系

  • 除了使用直接公式,还可以使用递推关系找到三十二边形数,该关系指出每个数是前一个数加上其他东西
    T(n) = T(n-1) + 30(n-1) - 2
  • 这种查找相同数字的方法很有用,因为它使我们无需进行大量乘法和平方运算即可找到三十二边形数。这对于计算机程序很有用,因为它们可以在不工作量很大的情况下找到大量数字。

奇数模式

我们可以注意到的关于三十二边形数(不包括第一个)的另一件事是它们总是奇数。这是因为当我们代入 15n² 和 14n 的公式并简化后,它会得到一个表达式,当 n 是大于或等于 2 的整数时,该表达式始终是奇数。

三十二边形数在数论中的应用

数论、组合数学和计算算法都使用三十二边形数。通过研究这些数字如何以结构化的方式增长以及它们具有哪些数学事实,研究人员可以确定最佳的安排方式,以避免重叠,使计算更快、更准确,并更好地理解具有平方指数的函数。还值得注意的是,这些形状结合了代数和几何学的思想,这也是它们在不同数学分支中如此重要的另一个原因。

示例

让我们举一个例子来说明 C++ 中的三十二边形数。

输出

First 20 Triacontakaidigon Numbers (Recurrence Method):
T(0) = 0
T(1) = 1
T(2) = 32
T(3) = 93
T(4) = 184
T(5) = 305
T(6) = 456
T(7) = 637
T(8) = 848
T(9) = 1089
T(10) = 1360
T(11) = 1661
T(12) = 1992
T(13) = 2353
T(14) = 2744
T(15) = 3165
T(16) = 3616
T(17) = 4097
T(18) = 4608
T(19) = 5149
Enter a value of n to compute T(n) using the formula: 25
T(25) using formula = 9111   

结论

总而言之,来自 32 边形的数字称为三十二边形数。这些数字在使用数学问题时具有一些特殊之处。通过观察它们与其他边数不同的形状的关系,我们可以看到代数和几何之间存在一些有趣的联系,这些联系适用于许多不同类型的相似数字。我们可以通过添加一些东西来找到下一个形状数。

在编程方面,我们可以通过将值代入公式来快速找到这些数字。我们还可以从一个有 1 条边的形状开始,然后是 2 条边,等等,计数直到得到我们想要的数字。就像其他类型的形状数一样,它为我们提供了一种检查答案的好方法。


下一个主题Sorting-vectors-in-cpp