📅  最后修改于: 2023-12-03 15:11:27.329000             🧑  作者: Mango
你是否曾经遇到过需要检查一个数字是否是七边形数字的要求呢?在这里,我们将介绍如何编写一个程序来检查一个数字N是否是居中的七边形数字。
七边形数字是一种数字序列,它是按照以下方式构建的:
这样就得到了一个七边形数字序列。
7 6 5 4 3
8 1 2 3
4 5 6
7
可以通过计算公式来判断一个数字是否为居中的数字。最中心的数字是1,最外层的数字为7,每层的数字数量为1、6、12、18、24、30、36,全部数字的总量为1+6+12+18+24+30+36=127。
因此,我们可以使用以下的算法来检查数字N是否为居中的数字:
我们可以将上述算法转换为以下的Python代码由程序来执行:
def is_centered_hexagonal_number(n:int)->bool:
if n == 1:
return True
max_num = 1
layer = 1
while max_num < n:
layer += 1
max_num = 3 * layer * (layer - 1) + 1
min_num = 3 * (layer - 1) * (layer - 2) + 2
if n < min_num:
return False
return (n - min_num + 1) % 7 == 0
assert is_centered_hexagonal_number(1) == True
assert is_centered_hexagonal_number(7) == True
assert is_centered_hexagonal_number(37) == True
assert is_centered_hexagonal_number(38) == False
assert is_centered_hexagonal_number(41) == False
在上述测试样例中,我们可以发现一些特化情况: