【发布时间】:2017-08-21 03:39:23
【问题描述】:
多边形数定义为以正多边形形状排列的点表示的数。
例如:
三角数是 0, 1, 3, 6, 10, 15, 21, 28, 36, 45, ...
平方数是 0、1、4、9、16、25、36、49、64、81、100,...
五边形数是 0, 1, 5, 12, 22, 35, 51, 70, 92, 117, ...
等等……
有众所周知的公式可以计算任何这些数字。要计算第 n 个 s-gonal 数,可以使用公式 (n^2 * (s - 2) - (n * (s - 4))) / 2
我想知道的是,有没有一种有效的方法来检查给定的数字对于给定的 s 是否为 s-gonal?
显而易见的方法是从生成 s-gonal 数的函数中获取连续值,直到找到 n 或值超过 n,但这具有线性时间复杂度。
我知道有一些公式可以用来确定一个数字对于 s 的特定值是否为 s-gonal,但我想要一个适用于任何 s 的公式。
【问题讨论】:
标签: algorithm language-agnostic number-theory