幻方构造(二) | 寒山烟雨
现在的位置: 首页 > 小试身手 > 正文

幻方构造(二)

2012年04月24日 小试身手 ⁄ 共 589字 ⁄ 字号 评论 2 条 ⁄ 阅读 4,057 views 次

书说一出,话分两头。上回说到奇数阶幻方的构造,这是幻方构造里最简单的了。这回说说双偶阶幻方的构造,其实并不比奇数阶幻方难多少。

首先认识一个数,叫——双偶数,指的是能被4整除的数,如:4、8、16.这样的数能被四整除(废话嘛),所以构成的矩阵可以分割成4*4的方阵。

其次,再认识一个数叫幻数,取决于n——n*n+1。

好了,预备工作到此为止,开始构造。主要步骤如下:

1.构造出来n*n的矩阵,从一开始依次填到n*n

2.把矩阵分成4*4的的小块(知道为什么要用双偶数了吧)

3.每个小块找到主对角线和副对角线,用幻数减去相应的值得到新值。

构造完毕。

 Python | 
 
 copy code |
?

1
#!/usr/bin/env python3
2
#双偶阶幻方
3
n=int(input("请输入一个双偶数(n<=24):"))
4
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 to end")

0
【上篇】
【下篇】

目前有 2 条留言    访客:2 条, 博主:0 条

  1. tusooa 2012年04月26日 下午7:57  @回复  Δ-49楼 回复
    Firefox Firefox GNU/Linux GNU/Linux

    有专门构造方法。先像你那样分割,然后每小块正序填入一半的数,再倒序填入剩下一半。

  2. 巧迪尚惠 2012年04月26日 上午10:54  @回复  Δ-48楼 回复
    Internet Explorer Internet Explorer Windows Windows

    好深奥的问题。

给我留言

留言无头像?


×