n阶幻方(n>4)的几种构造方法
殷志祥
摘要:提出并证明了:1.递归构造n阶幻方(n>4)的方法;2.已知m阶幻方(m>2)、n阶幻方(n>2),求mn阶幻方的公式;3.已知m阶幻方(m>2),构造2m阶幻方的方法。 关键词:幻方;构造方法;递归 中图分类号:O157 文献标识码:A 文章编号:1001-7038(2000)01-0067-06
Methods of constructing magic squares of
order n (n>4)
YIN Zhi-xiang (Dept. of
Math. and Phys.)
Abstract: In this
paper, the author gives some methods of constructing magic squares: 1. a
method of recursively constructing magic squares of order n (n>4);
2. a formula of obtaining magic
squares of order mn when magic squares of order m (m>2) and magic squares of
order n(n>2) are given; 3. a method of obtaining magic squares of order 2m
when magic squares of order m (m>2) are given. Key words: magic square; methed of construetion;
recurrence
1 引言
有关幻方的记载最早出现在我国春秋时期(约公元前500年)的著作《论语》和《书经》中,“洛书”就是三阶幻方。从古至今有不少的学者对幻方做了进一步的研究,比如南宋的杨辉,现代的舒文中等。本文共提出了三种方法,有的适用所有n阶幻方(n>4),并且可在计算机上利用本文的构造方法和公式求出相应的n阶幻方(不管n为多大)。
2 方法和证明
定义1:若一个元素为1~n2的n×n矩阵,其每行、每列以及两条对角线的和都相等,称这个矩阵为n阶幻方。若一个n×n矩阵的元素恰好是连续整数a,a+1,…,a+n2-1这个矩阵记为A(a,n),特别当a=1时,这个矩阵即为n阶幻方,记为A(n)。 显然,若能构造出A(n),那么它的每个元素加上a-1,就得到A(a,n)。 1可以看作是1阶幻方,2阶幻方是不存在的,3阶幻方A(3)和4阶幻方A(4)的例子为:

下面介绍三种方法: 2.1 递归构造幻方A(n)(n>4) 首先取: Aij(n)=Ai-1,j-1(n-2)+2n-2 (2≤i≤n-1;2≤j≤n-1) 也就是说,A(n)去掉第1行,第n行;第1例,第n列后得到A(2n-1,n-2)。容易知道,只要再使n×n矩阵的第2~n-1行(例)首末两数之和,两对角线两端两数之和都是n2+1,而第1行(列)、第n行(列)各数之和都为 ,便可得到A(n)。 A(n)比A(2n-1,n-2)多出
|
1,2,…,2(n-1), (1) |
这些数 |
|
n2,n2-1,…,(n-1)2+2 (2) |
为方便起见,称(1)中的数为小数,(2)中的数为大数。 而a和n2+1-a定义为一组大小数对应数。 令:a1j=n2+1-anj;
aj1=n2+1-ajn;
(2≤j≤n-1);a11=n2+1-ann;
a1n=n2+1-an1。 以下固定取a11=n2,ann=1。 在(1)、(2)中再找出2n-2个数填入A(n)的第一行和第一列,使第一行和第一列各数之和都为(1)/(2)n(n2+1)。由上可知这2n-2个数除了a1n和an1是互为对应数外,其它各组对应数都只取一个,所以若第一行和第一列各数之和都为 ,则第n行和第n列各数之和也都为 ,得到A(n)。 分下列四种情况考虑:n=4k+3,n=4k+1,n=4k+4,n=4k+2(k为自然数)。 ①
n=4k+3 取下列各数填入第一行和第一列(除a11外) 3, 4k+2, 4k+3,… ,
4(2k+1), n2-4k, n2-4k+1, …,
n2-1 (3) 因为3和n2-2是一组对应数,它们必须填在a1n和an1的位置。 (3)中共有1+(4k+3)+4k=8k+4个数,它们的总和为

因此,只要把它们分成两个各有4k+2个数,且其和都是 的集合,那么第一行(列)各数总和为  满足要求的两个集合容易找到。举例如下: (3)中共有4k个大数n2-4k,n2-4k+1,…,n2-1,它们可以分成k组数,每一组含有四个连续整数: {n2-4i,
n2-4i+1, n2-4i+2,
n2-4i+3,} 1≤i≤k 只要把每一组的四个连续整数中的中间两数放入一个集合M1,首尾两数放入另一个集合M2即可。设M1中含有n2-2。 (3)中的小数共有4k+4个,将3,4k+3,
8k+3,
8k+4放入M2(注意3和n2-2不能入同一个集合),4k+2,4k+4,4k+5,8k+2放入另一个集合M1;其它的4k-4个连续整数4k+6,…,8k+1也分成和数相等的各含2k-2个整数的两组,分别放入M2和M1两个集合,即可。 现在(3)已分成两个各含4k+2个数,且其和都是 的集合。把M1和M2分别填入第一行,第一列。注意3和n2-2填在右上角(左下角)的位置,其它各数的位置可任意排列。 ②
n=4k+1 第一行、第一列的数(除a11=n2外)取作 5, 4k+3,
4k+5, 4k+6, … 8(k+1) n2-4k-3, n2-4k-1,
n2-4k,…
n2-1 先把4k+2个大数分为两个各含2k+1个数且其和相等的两部分,分别填入M1,M2: 把n2-1,n2-3,n2-4k-3放入集合M1,n2-2,n2-4,n2-4k-1放入集合M2,而余下的4k-4个连续整数n2-4k,…,n2-6,n2-5可按①中处理连续数的方法分成两部分放入M1和M2中(设M1含有n2-4)。 对于4k+6个小数,也将它们分成两部分: 5,
8k+6, 8k+8放入集合M2,4k+3, 4k+9, 8k+7放入另一个集合M1。剩下的4k+5,
4k+6, 4k+7, 4k+8以及4(k-1)个连续整数4k+10, 4k+11,…,
8k+5也可分成两个各含2k个数且其和相等的部分分别放入M1和M2中。 最后将M1(M2)的各数分别填入幻方的第一行(列),注意将5填在右上角或左下角位置,n2-4填在右上角或左下角位置。 ③
n=4k+4
(k≥1) 第一行a11=n2,a1n=4k+8,其它为 2,
4k+4, 4k+7, n2-4k-8, n2-4k-9,
n2-4这6个数。 当k>1时,再加上: {4i, 4i+1, n2-4i-1,
n2-4i-2} 2≤i≤k {4i-1, 4i, n2-4i,
n2-4i-1} k+3≤i≤2k+1 (4) 这2k-2组数中任取k-1组,(除a11a1n外其它可随意填,下同)。 第一行共有8+4(k-1)=4k+4=n个数,其总和为:  第一列:a11=n2,
an1=n2-4k-7,其它为:3,4,4k+5,4k+6,n2-5,n2-6这6个数,当k>1时,再加上(4)中剩下的k-1组。 ④
n=4k+2 (k≥1) 第一行:a11=n2,
a1n=4k,其它的数为: 4k-1, n2-4k, 4k+4,
n2-4k-4 当k>1时再加上 {4i+2, 4i+3, n2-4i-3,
n2-4i-4} 0≤i≤k-2 {4i+1, 4i+2, n2-4i-2,
n2-4i-3} k+2≤i≤2k (5) 这2(k-1)组数中任取(k-1)组。 第一列:a11=n2,
an1=n2-4k+1。其它的数为: 4k-2, 4k+3,
n2-4k-5, 4k+2,
当k>1时,再加上(5)中剩下的(k-1)组数。 若n是大于8的偶数,n阶幻方的四条边(即第1,n行,第1、n列)还可通过另一种递推法求出。 注意用上法求得6阶幻方中第一行为36,
32, 28, 3, 8, 4。 第一列为36, 6, 7, 2, 27, 33,
各有3个大数,3个小数。 8阶幻方的第一行为64, 2, 8, 11, 52, 51, 60, 12; 第一列为64, 3,
4, 9, 10, 59, 58,
53 各有4个大数,4个小数。 假设已经构造出n-4阶幻方(n是大于8的偶数)A(n-4)。且它的第一行、第一列的大数个数等于小数个数(因此四条边上大数个数都相同)。 现在需要构造n阶幻方A(n)的四条边(中心部分可利用n-2阶幻方造出,如上所述)。 设A(n-4)的第一行元素为A11(n-4),A12(n-4),…,A1,n-4(n-4) 令  现取 A11(n)=A*11(n-4) A1n(n)=A*1,n-4(n-4) 并把A*12(n-4),…,A*1,n-5(n-4)任意填入A(n)的第一行的剩下位置,还剩下4个空位,填入下列各数。 n2-2n+6,
n2-2n+7, 2n-4,
2n-7 (6) 同样把A(n-4)的第一列填入A(n)的第一列(即大数加上8(n-2),小数不变,首末两数位置不变,其它可随意填),再填入下列4个数: n2-2n+3,
n2-2n+10, 2n-3,
2n-8 (7) 由于(6)、(7)中4个数的和相等,都是2n2+2,而第一行(列)其它各数的和等于:  因而第一行(列)各数的总和为 ,这就证明所构造的矩阵确是一个幻方。 2.2 由m阶幻方和n阶幻方构造mn阶幻方 已知m阶和n阶幻方,可利用它们构造mn阶幻方A(mn)。取 Ami+j,mr+s(mn)=m2(Ai+1,r+1(n)-1)+Aj,s(m) 0≤i,
r≤n-1, 1≤j,
s≤m 当i,r取遍0到n-1各数,j,s取遍1到m各数,则(mi+j,mr+s)恰好取遍A(mn)的所有下标。又因Ai+1,r+1(n)取遍1到n2各数,Aj,s(m)取遍1到m2各数。可知,所构造的矩阵元素恰取遍1到m2n2各数各一次。 A(mn)的第mi+j行(0≤i≤n-1,1≤j≤m)总和为:

同理可知它的每列、和两条对角线各元素之和都等于 由这个构造法可知,用一个n阶幻方和n2个不同的m阶幻方可构造mn阶幻方。
3 偶数阶幻方构造法
为了构造2m阶幻方A(2m),首先构造一个2m阶矩阵M(2m),它的元素都是1,2,3,4,此矩阵可以分成m2块。

其中Bij(1≤i≤m,1≤j≤m)是2×2矩阵,并且四个元素为1,2,3,4四数,且每行两元素之和为5。对矩阵M(2m),还要求它的每行、每列及两条对角线各数之和都是5m。 我们仍用递推法来构造M(2m),M(6)和M(8)可以直接构造出来。这里不多说。下面叙述由M(2(m-2))构造M(2m)的方法。 M(2m)的中心2(m-2)×2(m-2)矩阵就是M(2(m-2)),即: Bi,j(2m,2m)=Bi-1,j-1(2(m-2),2(m-2)) 2≤i,j≤m-1 下面构造M(2m)的四边,即B1j(1≤j≤m),Bi1(1≤j≤m),Bmj(1≤j≤m),Bim(1≤i≤m)。

任取M(2(m-2))的两行第i行(i=(i1,i2,…,im-1),1≤i≤m-2)和第j行( =(j1,j2,,jm-2),1≤j≤m-2)填入M(2m)的第一行和第二行余下的位置。 再把这个第i行经过变换后(i1与i2交换,i3与i4交换,以此类推)填入M(2m)的第m-1行,第j行经过同样变换后(j1与j2交换,j3与j4交换,以此类推)填入第m行。 B1j(1≤j≤m),
Bmj(1≤j≤m)构造完毕。 用同等方法,任取M(2(m-2))的两列第i列(1≤i≤m-2)和第j列(1≤j≤m-2)填入M(2m)的第一列和第二行列下的位置;再把这个第i列和第j列经过变换后(第1个数与第2个数交换,第3个数与第4个数交换,依次类推)填入M(2m)的第m-1列和第m列。 Bi1(1≤j≤m),
Bim(1≤j≤m)也构造完毕。 容易证明所得矩阵M(2m)满足要求。 取一个已知m阶幻方A(m),作矩阵。

其中Cij(1≤j≤m,1≤j≤m)是2×2矩阵:

令A(2m)=M(2m)+C,容易看出A(2m)就是一个2m阶幻方。
淮南工业学院表扬基金资助项目.
殷志祥(1966-),男,安徽全椒人,硕士,副教授,主要从事数学教学工作及组合数学方面的科研工作.
殷志祥(淮南工业学院数理系,安徽 淮南 232001)
收稿日期:1999-10-08 |