幻方生成器
生成任意奇数阶幻方(3×3到11×11)。
关于此工具
幻方是经典的趣味数学之一:在正方形网格中填入互不相同的数字,使得每一行、每一列以及对角线的总和都相等,这个相同的总和被称为幻和常数。本生成器可以为任意奇数阶立即构建出有效的幻方,省去你手工排布的反复试验。
只需选择从3x3到11x11之间的奇数尺寸并生成幻方,每一行、每一列以及主对角线都会得到完全相同的总和。它适合用于教授数字规律、设计谜题、探索趣味数学,或测试编程练习题。
小提示:奇数阶幻方采用暹罗法构造,而幻和常数会随着尺寸增大而稳步增长。所有运算都在你的浏览器本地完成,数据不会离开你的设备。
常见问题
代码实现
def generate_odd_magic_square(n):
"""Siamese (De la Loubère) method for odd n."""
grid = [[0] * n for _ in range(n)]
row, col = 0, n // 2
for num in range(1, n * n + 1):
grid[row][col] = num
next_row = (row - 1) % n
next_col = (col + 1) % n
if grid[next_row][next_col] != 0:
row = (row + 1) % n
else:
row, col = next_row, next_col
return grid
def magic_constant(n):
return n * (n * n + 1) // 2
for n in [3, 5]:
sq = generate_odd_magic_square(n)
print(f"\n{n}x{n} Magic Square (constant={magic_constant(n)}):")
for row in sq:
print(" ".join(f"{v:3}" for v in row))Comments & Feedback
Comments are powered by Giscus. Sign in with GitHub to leave a comment.