.偶数阶幻方
说实话,偶数阶幻方我一直以为只有一种,就是2*n阶幻方问题。查了一下才知道偶数阶幻方也分为两小类。

先看看4阶幻方的填法:将数字从左到右、从上到下按顺序填写:

1 2 3 4
 5 6 7 8
 9 10 11 12
 13 14 15 16

将对角线上的数字,换成与它互补的数字。
这里,nn+1 = 44+1 = 17;
把1换成17-1 = 16;把6换成17-6 = 11;把11换成17-11 = 6……换完后就是一个四阶幻方。

16 2 3 13
 5 11 10 8
 9 7 6 12
 4 14 15 1

对于n=4k阶幻方,我们先把数字按顺序填写。写好后,按44把它划分成kk个方阵。因为n是4的倍数,一定能用44的小方阵分割。然后把每个小方阵的对角线,象制作4阶幻方的方法一样,对角线上的数字换成互补的数字,就构成幻方。 下面是8阶幻方的作法:
(1) 先把数字按顺序填。然后,按4
4把它分割成2*2个小方阵

1 2 3 4 5 6 7 8
 9 10 11 12 13 14 15 16
 17 18 19 20 21 22 23 24
 25 26 27 28 29 30 31 32
 33 34 35 36 37 38 39 40
 41 42 43 44 45 46 47 48
 49 50 51 52 53 54 55 56
 57 58 59 60 61 62 63 64

(2) 每个小方阵对角线上的数字,换成和它互补的数。

64 2 3 61 60 6 7 57
 9 55 54 12 13 51 50 16
 17 47 46 20 21 43 42 24
 40 26 27 37 36 30 31 33
 32 34 35 29 28 38 39 25
 41 23 22 44 45 19 18 48
 49 15 14 52 53 11 10 56
 8 58 59 5 4 62 63 1

好了,4*n阶幻方也完了,怎么样,简单吧!自己动手试试吧。

②.4n+2阶幻方
4
n+2,乍一看就较4n麻烦了,事实也是如此,不过它的思想也简单。就是将4n+2看做2*(2n+1),这样一来就转化成了四个2n+1求幻方。
附注:下面的我以6阶幻方为例,那么,4*n+2=6,所以n=1。

我通过描述每个步骤加上图形的方式来表述4*n+2阶幻方实现的过程。

第一步:把整个表格分成4个(2n+1)(2*n+1)的小表格,分别叫A,B,C,D。见下图

Java实验偶数阶幻方设计用户界面 幻方偶数阶行列式_数据交换

第二步:这样A,B,C,D个小表格就成奇数幻方问题了。
①.将1,2,…,(2n+1)(2n+1)这些数划分给A,并对A实现奇数幻方;
②.将(2
n+1)(2n+1)+1,…,2*(2n+1)(2n+1)这些数划分给B,并对B实现奇数幻方;
③.将2
(2n+1)(2n+1)+1,…3(2n+1)(2n+1)这些数划分C,并对C实现奇数幻方;
④.将3
(2n+1)(2n+1)+1,…4(2n+1)(2*n+1)这些数划分D,并对D实现奇数幻方。
见下图

Java实验偶数阶幻方设计用户界面 幻方偶数阶行列式_Java实验偶数阶幻方设计用户界面_02

第三步:从A表中的中心(即第n行的MagicSquare[n][n])开始,按照从左向右的方向,标出n个数,A表中的其他行则标出最左边的n格中的数(在图中用红色背景标出)。并且将这些标出的数和C表中的对应位置互换。见下图

Java实验偶数阶幻方设计用户界面 幻方偶数阶行列式_Java实验偶数阶幻方设计用户界面_03

第四步:在B表中的中心(如上解释)开始,自右向左,标出n-1列,将B中标出的数据与D表中对应位置的数据交换。但是6阶幻方中,n-1此时等于0,所以B与D不用做交换

Java实验偶数阶幻方设计用户界面 幻方偶数阶行列式_数据_04