📅  最后修改于: 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]
居中的八边形数是一种有意思的数字序列,可以通过简单的数学公式计算得出。在程序设计中,我们可以利用这个序列来实现各种数学问题的求解。