n阶幻方矩阵:把1~n×n的自然数按照一定方法排列成n×n的矩阵,使得任意行、任意列以及两个对角线上的数字之和都相等(已知n为奇数,假设n不超过15)。请编写一个程序,实现奇数阶幻方矩阵的生成。
时间: 2024-09-24 13:12:29 浏览: 41
奇阶幻方的一种构造法及其个数 (1999年)
n阶幻方矩阵,也称为魔法方阵,是一种特殊的数独游戏,其特点是每一行、每一列以及两条对角线上的数字之和都是相同的。对于奇数阶幻方,由于数据量不大,可以手动构建并验证。下面是一个简单的Python程序示例,用于创建1至n阶的奇数阶幻方矩阵:
```python
def generate_magical_square(n):
if n % 2 != 1 or n > 15: # 检查输入是否为奇数且小于等于15
raise ValueError("Invalid input. Please enter a valid odd number between 1 and 15.")
magic_sum = (n * (n + 1)) // 2 # 幻方和公式
# 初始化n x n矩阵
square = [[0] * n for _ in range(n)]
# 中心位置放置n
square[n // 2][n // 2] = n
# 遍历填充其他数字,从中心向外扩展
row, col = n // 2 - 1, n // 2
num = n + 1
while num <= magic_sum:
if row < 0 or row >= n or col < 0 or col >= n:
row, col = row + 1, col + 1
else:
square[row][col] = num
num += 2 # 双向交替递增
row, col = row - 1, col + 1 if row % 2 == 0 else row + 1, col - 1
return square
# 示例
n = 5
magical_square = generate_magical_square(n)
for row in magical_square:
print(row)
#
阅读全文