跳到内容
🛠️ToolsShed

幻方生成器

生成任意奇数阶幻方(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.