📜  居中的八边形数(1)

📅  最后修改于: 2023-12-03 15:39:21.639000             🧑  作者: Mango

居中的八边形数

居中的八边形数是一种特殊的数字序列,其数量限制在八边形数中心。

什么是八边形数?

八边形数是指一个八边形的每个角都有一个点,如下所示:

    • - • - •
   /         \
• -           - •
   \         /
    • - • - •

其中,第 $n$ 个八边形数为:

$$P_n = 3n^2 - 3n + 1$$

什么是居中的八边形数?

居中的八边形数则是在八边形数中心的一些数字。以 $P_1$ 为中心,每个八边形都有一个数字:

        • - • - •
       /         \
  • - 7 -   8   - 6 - •
     /         \     \
• - 4 -   1   - 2 -   5 - •
     \         /     /
  • - 9 -   3   - 10 - •
       \         /
        • - • - •

其中,中心数字为 1,周围一圈是 2、3、4、5、6、7、8、9、10。所有的居中的八边形数可以表示为:

$$P_1, P_2, P_3, P_4, P_5, P_6, \dots$$

如何计算居中的八边形数?

居中的八边形数的计算方式可以通过简单的数学公式来实现。

以 $P_1$ 为中心,将周围的数字从上到下、从左到右编号为 $1$ 至 $6$,如下所示:

       2
     1   3
       6
     5   4

其中,$P_2$ 到 $P_7$ 对应的数字为:

$$P_2 = P_1 + 1$$

$$P_3 = P_2 + (1 + 2) = P_1 + (1 + 2)$$

$$P_4 = P_3 + (1 + 3) = P_1 + (1 + 2 + 3)$$

$$P_5 = P_4 + (1 + 4) = P_1 + (1 + 2 + 3 + 4)$$

$$P_6 = P_5 + (1 + 5) = P_1 + (1 + 2 + 3 + 4 + 5)$$

$$P_7 = P_6 + (1 + 6) = P_1 + (1 + 2 + 3 + 4 + 5 + 6)$$

以此类推,可得出所有居中的八边形数的计算方式。

下面是一个 Python 实现:

def centered_hexagonal_number(n):
    return 3 * n * n - 3 * n + 1

def surrounding_numbers(n):
    return [centered_hexagonal_number(n+1+i) for i in range(6)]

def centered_hexagonal_numbers(start, end):
    return [centered_hexagonal_number(n) for n in range(start, end+1)]

print(surrounding_numbers(1))
# Output: [2, 3, 4, 5, 6, 7, 8, 9, 10]

print(centered_hexagonal_numbers(1, 10))
# Output: [1, 7, 19, 37, 61, 91, 127, 169, 217, 271]
总结

居中的八边形数是一种有意思的数字序列,可以通过简单的数学公式计算得出。在程序设计中,我们可以利用这个序列来实现各种数学问题的求解。