书说一出,话分两头。上回说到奇数阶幻方的构造,这是幻方构造里最简单的了。这回说说双偶阶幻方的构造,其实并不比奇数阶幻方难多少。
首先认识一个数,叫——双偶数,指的是能被4整除的数,如:4、8、16.这样的数能被四整除(废话嘛),所以构成的矩阵可以分割成4*4的方阵。
其次,再认识一个数叫幻数,取决于n——n*n+1。
好了,预备工作到此为止,开始构造。主要步骤如下:
1.构造出来n*n的矩阵,从一开始依次填到n*n
2.把矩阵分成4*4的的小块(知道为什么要用双偶数了吧)
3.每个小块找到主对角线和副对角线,用幻数减去相应的值得到新值。
构造完毕。
#!/usr/bin/env python3
#双偶阶幻方
n=int(input("请输入一个双偶数(n<=24):"))
Magic=[([0]*n)for i in range(n)]
m=1
k=n*n+1
for i in range(n):
for j in range(n):
Magic[i][j]=m
m=m+1
for i in range(n):
for j in range(n):
j0=j%4
i0=i%4
if i0==j0 or i0+j0==3:
Magic[i][j]=k-Magic[i][j]
for i in range(n):
for j in range(n):
print(“%3d”%Magic[i][j],end=’ ‘)
print()
input(“Press
有专门构造方法。先像你那样分割,然后每小块正序填入一半的数,再倒序填入剩下一半。
好深奥的问题。