任意16k阶Franklin完美幻方构造法
- 格式:pdf
- 大小:274.21 KB
- 文档页数:6
n 阶幻方的同心方阵构造法本文根据n 阶幻方的定义,首先利用线性方程组的理论证明了:利用同心方阵的办法可以构造出任意阶幻方,进而结合幻方的特点,给出了n 阶幻方的具体构造方法. 一 同心方阵构造法定义;将自然数1,2,3...n 2排成n 行n 列的方阵,若每行每列及每条对角线上的n 个数字的和皆为常数,称这样的n 阶方阵为n 阶幻方.这个常数称为幻方常数.同心方阵构造法是一种递推的方法.假定n 阶幻方已经做出,就依n 阶幻方为基础,在四周加上一层框子,即在第一行的上边,在第n 行的下边,各加上一行,在第一列的左边,在第n 列的右边,各加上一列.构造出一个n+2阶方阵,新的n+2阶幻方的中间部分是一个n 阶幻方,它是由原来的幻方的各元素分别加上2n+2形成的.n+2阶幻方的外围部分(即第一行,第n+2行,第一列,第n+2列所形成的正方形框子)是由数1,2,3, (2))2(+n 中的前2n+2个数,及后2n+2个数,按照下述要求构成的(1)使正方形各边上的n+2而数的和等于n+2阶的幻方常数k.(2) 使正方形上下两边,左右两边相对元素的和,及对角线两顶点元素的和都等于1)2(2++n .这样构成的n+2阶幻方的方法称为同心方阵构造法容易证明二阶幻方是不存在的.三阶幻方容易做出,四阶阶幻方见[1].我们以三阶,四阶幻方为基础,根据本文所给出的方法,可以构造出任意阶幻方.二 同心方阵构造法的理论基础⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡++++++++++++++22122322211111233122212111131211...*...**............***...**...n n n n n n n n n n n n n n x x x x x x x x x x x x x x x x 根据同心方阵构造法得到以下4n+4个未知数2n+6个线性方程构成的线性方程组(令H n =++1)222()- 2 - ................2331222121211211231322122211........左右相对....右上角与左下角................上下相对.....左上角与右下角H x x H x x H x x H x x H x x H x x H x n n n n n n n n n n n =+=+=+=+=+=+=++++++++++++ 左)...上)...下)..右)........(.....(.....(....(....2121112112112222212222212111K x x x K x x x K x x x K x x x H x x n n n n n n n n n n n n n =+++=+++=+++=+++=++++++++++++++ (其中K 为幻方常数)这个线性方程组与常数项组成的增广矩阵如下:⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡.00...00101...010100...00100...00000...000011...11111...11100...000000...00010...00010...101010...00000...00011...000000...000..........................00...00000...110000...00000...00000...001100...00000...00100...000010...00001...00000...000001...000........................00...10000...000000...10000...01000...000000...01010...00000...000000...001K K K K H H H H H H H H利用线性代数的知识,用矩阵的初等变换,将其化简(具体化简过程从略)成如下形式:- 3 -⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡-------------00 (00)000...000000...000000...00000...000000...00011...11100...000000...0002221...11010...101000...00000...00011...000000...000............................................................00...00000...110000...0002221...11010...100100...00011...11000...000010 (0000)1 (00)000...000001...000............................................................00...10000...000000...10000...01000...000000...01010..00000...000000...001K H K H H K H K H H H H H由上面的矩阵可以看出;系数矩阵与增广矩阵的秩相等,可知线性方程组有解.这就证明了同心方阵构造法的可行性.同时还可以得到线性方程组的一般解.1221231322122211........................+++++++-=-=-=-=n n n n n n n x H x x H x x H x x H x 2212232221211124412331221223222124232222122322212423212212232221...........................2......22......22...++++++++++++++++++++++++++++++++++++++++-----=-=-=-=----------=+++++++++-=+++++-=n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n x x x x K x x H x x H x x H x x x x x x x x H K x x x x x x x x K H x x x x x K H x从而可知;这4n+4个未知数,其中2n+4个可由其它2n 个变量线性表出.即线性方程组中有2n 个自由未知量.这些自由未知量可以从数列1,2,…,2)2+n (中的前面2n+2个数,或从后面2n+2个数中选定.便可以由以上公式确定线性方程组的解.这就完成了证明.利用上述公式作具体的幻方,还有一些技术性的问题需要解决.就是要在指定的数集中- 4 - 求解.即自由未知量在4n+4个数中选定,其它未知量也必须在这4n+4个数中选定.4n+4个未知量与4n+4个自然数构成一一对应.下面给出一个具体的求解的办法.供读者参考.读者还可找到更巧妙的解.三 奇幻方的构造方法3.1奇幻方的构造法(n=2m+1)假定2m-1阶幻方已经做出,我们要作2m+1阶幻方. 3.2排序外围正方形四边数字的个数,m m m 8)12()1222=--+(前4m 个数字由小到大排序,后4m 个数字由大到小排序,两个数列构成一一对应如下:)1(..........).........41(14)12....(,.........,,,1)12....(,2)12...(1)12...()12(4...............,.,................................,,.........3.............,.........2........,.........122222m i m m i m m m m mi 到从+-+∙∙∙+-+∙∙∙-+-++∙∙∙∙∙∙上下两个相对的数的和都等于 1)12(2++=m H3.3配置上下两行从(1)中,将排好的4m 对数中截取前2m+1对,配置成上下两行,如下:(为方便计记a m =+2)12())2...(,...,2,1...,.........,...,2,11.2..........12...........122...22.......,.2........m i m i m i i a m a i a i ==+∙∙∙-∙∙∙+--∙∙∙+-∙∙∙ 由于幻方常数)122)(12(2)4411()12()12(])12(....21[1212222+++=+++++=+++++=m m m m m m m m m k 计算上下两行的和)12(...................................................)12)(12().1)12()(12(12)12(121212)12()12()12(..).........132)(12()12)(1)(12()12)(1()1(222)2(2)2(2)22(22211122111++++=+++=+++=++=++=++-++-++++=+++=++=+=-++=-++=-++=-++-+=∑∑∑∑∑∑=====m m k m m m m m m m m m m ma m a m i i a S m m k m m m m m m m m a m m a m ma ma a m m a a m a i a i S mmi mi mi m i m i 少比下=多比上- 5 -所以需要对配置的两行进行必要的调整.3.4调整对(2)作如下的调整,把第二行中的1换成1+2m+1,把3换成3+2m+1,…,把2i+1换成2i+1+2m+1,…,把2m-1换成2m-1+2m+1=4m,与它们对应的第一行的数也随着变化.调整后的两行成如下形式:)3,.......(1..,.........112........),........(2...,122.,1)(2....,,.........2m i m i m i m i a m a i m a i 到从到从+∙∙∙+∙∙∙+--∙∙∙++-∙∙∙ km m m m m m m m m m m m m m m ma m i m i a m i m i a S km m m m m m m m m m m m m m m m m a m m a m m ma ma i m a i m a i m a i S mi mi mi mi m i m i =+++==++++=+++++=++++=+++++-=+++++-==+++=-+++=-+++=+-++=+-+=-++-=-++--+=-+++-+=∑∑∑∑∑∑======)122)(12()12)(12()12()12()12(12212)2212(12)(2)12()122)(12()132)(12(])12)(1)[(12()12()12)(1()12()1(222]1222[2]1)2([222221112222111下上3.5 组合左右两列 确定四角元素从4m 对数中选出2m+1对后,余下2m-1对,组成左右两列如下:)4.......(2..........1122........22222.........12m i m i i m i a i m a i 到从到从∙∙∙-+∙∙∙+-∙∙∙+--∙∙∙- 241464)122)(12(1641244)12)(1()12()12)(1()12)(1()12222()122()22()122()22(23223223222221+=-+++=+++=-+=--+++=+-++=+-+=++-+=++++-+=-+++-+=-+++-=∑∑∑∑∑=====m S k m m m m m m k m m m m m m m m m m m m m ma m a m a i m i a a i m i a a i m i a S mi mi mi mi mi 右右由于4m+2=2m+(2m+2)由于4m+2可以拆成2m+2和2m,观察(3)中2m 在上面一行,2m+2在下面一行,就把2m 放在右上角,把2m+2放在右下角即可.其它两个角的元素是(3)中2m 和2m+2对应的另- 6 - 一行上的数,把上行中其余的数加在2m-1幻方的上面下行中对应的数放在下面相对应的位置上.(4)中的上行加在左边,下行对应的数加在右边相对的位置上.这就完成了加边的工作.作出了2m+1阶幻方.四 偶幻方的构造方法(n=2m)4.1偶幻方的构造法(n=2m )假定2m 阶幻方已经做出,我们要作2m+2阶幻方. 4.2排序外围正方形四边数字的个数,48)2()2222+=-+m m m (前4m+2个数字由小到大排序,后4m+2个数字由大到小排序,两个数列构成一一对应如下:)5(..........).........24...1..(14)22.(.1)22.(2)22...(1)22...()22(24.............................................,3...........,.........2..........................,.........122222+--+∙∙∙+-+∙∙∙-+-+++∙∙∙∙∙∙m i m m i m m m m m i 到从 上下两个相对的数的和都等于 1)22(2++=m H4.3配置上下两行从(5)中,将排好的4m+2对数中截取前2m+2对,配置成上下两行,如下:(为方便计记b m =+2)22()).6........(....,......,2,.1.2.2..,..............2...........2....2212.,...12.,12.........12......m i m i m b i b m b i b m i ∙∙∙=+∙∙∙-∙∙∙+---∙∙∙+-+∙∙∙- )1)(1()1)22)[(12(])22(21[22122++=+++=++∙∙∙+++=b m m m m m k 计算上下两行的和1)2)(1(1)1(+++=++=m k b m S m k b m S 多比下少比上所以需要对配置的两行进行必要的调整.4.4 调整对(6)作如下的调整,把第一行中的2m+1换成2m+1+m+2=3m+3,那么第二行的b-2就换成b-3m-2,将第二行的2m+2换成2m+3,那么第一行的b-2m-1就换成b-2m-2,调整后的两行成如下形式:).7........(....,.....,...2,1.3.2..,..........2........23....2222.,...12.,33........12......m i m i m b i b m b i b m i =+∙∙∙--∙∙∙+---∙∙∙+-+∙∙∙-- 7 -kb m m b b m m m b i i b S kb m m b mb m b m i b i S mi mi mi m i =++=+-++=++--+++-==++=+++=--++++-+-=∑∑∑∑====)1)(1(1)2(32232)22()1)(1(12233]12[)12(1111下上4.5 组合左右两列 确定四角元素 n=2m,其中m 分为奇偶两种情况. 4.5.1 m=2t+1从4m+2对数中选出2m+2对后,余下2m 对,组成左右两列如下:)8..(....................1...2..................................123......1)23(.1)(2......1)(2......22.......2.......23.....23........).....(2.).....(2...........12..12+∙∙∙++∙∙∙++-∙∙∙++∙∙∙++-+-∙∙∙--∙∙∙+∙∙∙+-∙∙∙+--+t i i m i m b i m i m b m m b i m b i m i m b i m m b m 到从11)1)(1(2)2()2)(12()2()2()2()123()123()122()122(22212121212+-=-+++=++=+=+=++=+++++=++++--+++++--+++-=∑∑∑∑+=+=+=+=m b S k b m mb b m k m mb b m b t b t b t b i m i m b i m i m b m m b S t i t i t i t i 右右 从(7)中第一行找到b-2m-2,由于b-m+1=(b-2m-2)+(m+3)而3)22()1()22(+=---+-=----m m b m b m b S k 右由于第二行2,4,6,…,2m 中,必有m+3=2t+1+3=2t+4(为偶数)于是就把b-2m-2放在右上角,把m+3放在右下角即可.其它两个角的元素是(7)中b-2m-2和m+3对应的另一行上的数。
偶数阶幻方构造方法我折腾了好久偶数阶幻方构造方法,总算找到点门道。
一开始我真的是瞎摸索,就感觉这偶数阶幻方特别神秘。
我先试了最简单的4阶幻方构造,我就按照常规思路,想把1到16这些数字依次摆放。
我先从左上角开始放1,然后按照顺序横着摆。
结果发现最后得到的根本不是幻方,每行每列以及对角线上的数字之和都不一样。
我当时就有点懵,知道自己这个方法肯定不对。
后来我看书才知道,原来对于4阶幻方有一种双偶阶幻方的构造方法。
我就跟着这个方法重新试。
这方法就像搭积木一样,先把1到16分成四组。
然后先确定四个角的数字,把最小的那一组数字里最小的数放在左上角,最大的数放在右下角,第二小的数放在右上角,第二大的数放在左下角。
这就像给房子先打四个桩基一样。
再慢慢地按照一定的规则往里面填数,比如从左到右,从上到下,遇到已经填过数字的格子就按斜线方向跳着填。
这个过程一定要特别仔细,我第一次填的时候就因为粗心大意跳错了格,结果又失败了。
对于6阶这样的双偶阶幻方也可以用类似的方法。
不过分组的时候是分成六组,操作起来就会更复杂一点。
我有一次在构造6阶幻方的时候,前面填角上的数字就弄错了,因为要根据数字的大小顺序和分组情况准确放置,我当时一马虎就搞错了,结果全盘皆输。
对于单偶阶幻方,比如说10阶,构造起来就更加复杂了。
我还没完全掌握特别好的通用方法。
我现在知道一种方法是先把它当成大的双偶阶幻方构造,然后再进行调整。
但这个调整的过程中很容易出错,要根据具体的数字和位置关系来操作。
我觉得要是构造偶数阶幻方的话,最重要的就是得细心,不管是分组还是按规则填数,差一点就全不对了。
而且每个不同规模的偶数阶幻方可能都有自己需要注意的小细节,一定要先搞清楚基本的构造框架。
像4阶幻方可以当做最基本的模型去研究,把它搞透彻了,再去弄6阶、8阶之类的可能就会好一些。
在一个由若干个排列整齐的数组成的正方形中,图中任意一横行、一纵行及的几个数之和都相等,具有这种性质的图表,称为“幻方”。
我国古代称为“”、“”,又叫“”。
1、奇数阶幻方——罗伯特法(也有人称之为楼梯法)(如图一:以五阶幻方为例)奇数阶幻方n 为奇数 (n=3,5,7,9,11……) (n=2×k+1,k=1,2,3,4,5……)奇数阶幻方最经典的填法是罗伯特法(也有人称之为楼梯法)。
填写方法是这样:把1(或最小的数)放在第一行正中; 按以下规律排列剩下的n×n-1个数:(1)每一个数放在前一个数的右上一格;(2)如果这个数所要放的格已经超出了顶行那么就把它放在底行,仍然要放在右一列;(3)如果这个数所要放的格已经超出了最右列那么就把它放在最左列,仍然要放在上一行;(4)如果这个数所要放的格已经超出了顶行且超出了最右列,那么就把它放在前一个数的下一行同一列的格内;(5)如果这个数所要放的格已经有数填入,处理方法同(4)。
这种写法总是先向“右上”的方向,象是在爬楼梯。
口诀:1居首行正中央,依次右上莫相忘上出格时往下放,右出格时往左放.排重便往自下放,右上出格一个样图一2、单偶数阶幻方()122+=m n ——分区调换法(如图二:以六阶幻方为例) ① 把()122+=m n 阶的幻方均分成4个同样的小幻方A 、B 、C 、D(如图二)图二(注意A 、B 、C 、D 的相对位置不能改变,因为12+m 为奇数,所以A 、B 、C 、D 均为奇数阶幻方) ② 用连续摆数法在A 中填入21a ——构成幻方,同理,在B 中填入()2221a a ——+、在C 中填入()22312a a ——+、在D 中填入()22413a a ——+均构成幻方(2na =)(如图三)图三(因为12+m 为奇数,所以A 、B 、C 、D 均为奇数阶幻方,必然可以用连续摆数法构造幻方)③ 在A 的中间一行上从左侧的第二列起取m 个方格,在其它行上则从左侧第一列起取m 个方格,把这些方格中的数与D 中相应方格中的数字对调(如图四):图四不管是几阶幻方,在A 中取数时都要从中间一行的左侧第二列开始;因为当6=n 时,1=m ,所以本例中只取了一个数)④ 在A 中从最右一列起在各行中取1-m 个方格,把这些方格中的数与D 中相应方格中的数字对调。
//任意阶幻方算法c++// Magic.cpp : Defines the entry point for the console application./**-------------------------------------------------------------------------功能:幻方构造说明:幻方,亦称纵横图。
将自然数1,2,3,……n*n排列成一个n*n方阵,使得每行、每列以及两对角线上的各个数之和都相等,等于n/2*(n*n+1),这样的方阵称为幻方。
8 1 63 5 74 9 2数学上已经证明,对于n>2,n阶幻方都存在。
目前填写幻方的方法,是把幻方分成了三类,每类又有各种各样的填写方法---------------------------------------------------------------------*/#include "stdafx.h"#include <iostream.h>#include <stdio.h>int get_n(); //读入阶数int Odd_Construct(int,int*,int =1); //构造奇数阶int Bi_Even_Construct(int,int*); //构造双偶阶int Bi_Even_Construct_init(int ,int * ); //双偶阶初始化int Bi_Even_Construct_Switch(int ,int * ); //双偶阶对调对角线int init_quadrant_ABCD(int ,int *); //初始化各象限元素int Swap_A_C(int n,int* ,int* ); //交换A,C象限int Swap_B_D(int n,int* ,int* ) ; //交换B,D象限void swap_no(int* ,int* ); //交换一个元素int copy_quadrants_to_magic(int n,int* magic,int* sub_magic_A,int* sub_magic_B,int* sub_magic_C,int* sub_magic_D);//把ABCD各象限合并到magic int Single_Even_Construct(int,int*); //构造单偶阶int init_magic(int,int*); //初始化幻方int print_magic(int,int*); //打印幻方/**----------------------------------------------------------------------主程序-------------------------------------------------------------------------*/int main(int argc, char* argv[]){intn;n=get_n();//读入阶数nints=n*(n*n+1)/2;//计算幻和printf("\nS= %d",s);int* magic=new int[n*n] ; //magic存n阶幻方,是整型指针,指向数组头init_magic(n,magic);//将所有值初始化为0if( n%2 == 1 ){Odd_Construct(n,magic );//构造奇数阶幻方}else{if( n%4 == 0 ){Bi_Even_Construct(n,magic ); //构造双偶阶4k}else{Single_Even_Construct(n,magic ); //单偶阶4k+2}}print_magic(n,magic );//打印幻方if(magic!=NULL){//释放幻方内存delete[] magic;magic = NULL;}return 0;}/**---------------------------------读入阶数n,这里限制 n是为了n在一屏显示下,其实可以增大之---------------------------------*/int get_n(){int n;do{printf("请输入幻方阶数n <=100:\n");cin>>n;if(n <3 || n>100){printf("\nN 必须在 [3,100]" );continue;}elsebreak;}while(n>100);return n;}/**----------------------------初始化幻方,所有元素置0;初始化是必须的,以便用0判断填充否--------------------------------*/int init_magic(int n,int *magic){for(int i=0; i <n; i++ ){for(int j=0; j <n; j++ ){*(magic++)=0; //幻方每个值置0}}return 0;}/**---------------------------------打印幻方------------------------------------*/int print_magic(int n,int *magic){for(int i=0; i <n; i++ ){printf("\n");for(int j=0; j <n; j++ ){printf("%3d ",*(magic ++) ); //打印幻方值}}printf("\n");return 0;}/**---------------------------------------------------------------1、奇数阶幻方n为奇数 (n=3,5,7,9,11……) (n=2*k+1,k=1,2,3,4,5……)奇数阶幻方最经典的填法是罗伯特法(也有人称之为楼梯方)。
奇数阶幻方构造当n是奇数时,只需按以下步骤填写,即可得到一个n阶幻方.(1)先画一个n×n方格表;(2)把1填写在最顶行中间;(3)当k填好后,若k的右上方空,则把k+1填在此格,否则,把k+1填在k的下方.(注意,这里我们把最左列视作在最右列的右方,把最底行视作在最顶行的上方)例1填写一个3阶幻方这就是刚才的A3例2填写一个5可验证这是幻和为654k(双偶数)阶幻方的构造●4阶幻方的一种构造方法一般来说,偶数阶幻方的构造较难,但对于四阶幻方,我们有较简单的方法。
步骤如下:(1)先画一个4×4方格表;(2)在方格表中按顺序填写1~16;(3)兰.即1←→16,4←→13,6←→11,7←→10. 对换后,即得一个四阶幻方.●8阶幻方的构造幻和S8=260先按自然顺序填写8阶方阵;兰色不动,其余关于中心对称的两数互换位置.。
一般的4k 阶幻方仍可按此规律来构造.4k+2阶幻方的构造我们先来考察一个6阶幻方可以如何构造出来.第一步,先用上述介绍的方法构造出一个4阶幻方, 如图1所示,幻和为34; 第二步,把这个4阶幻方的每个数都加上10,得图2所示, 此时幻和为74;图2所用的数是11~26, 恰是1~36中间的16个数, 如图3所示;图1 图210−−−−→全部加图3第三步,观察剩余的20个数有这样的规律:+=+=+==+=,136235334102737而37+74=111=S 6, 于是,可把这20个数按“和为37”配成10对,如图4所示。
把第一行的数称为小头数,第二行的数称为大头数。
图4第四步,按每对在同一行或同一列或同一对角线的原则,把它们添加到图2的四周,但要满足: (a) 每边3个小头数;(b)对边的小头数之和相等。
这就可得到一个6阶幻方,如图5所示。
图5图5四周每边3个小头数(蓝色),第1行与第6行的小头数之和都是20; 第1列与第6列的小头数之和都是17.这种方法可以推广到一般4k+2阶幻方的构造,其步骤是:(1) 先构造出一个4k阶幻方;(2) 把这个4k阶幻方的每个数都加上8k+2,即把这16k2个数移到1~(4k+2)2的中间;(3) 把剩余的首尾两段小头数与大头数配对,每对之和为16k(k+1)+5;(4) 按每对在同一行或同一列或同一对角线的原则,把它们添加到上图的四周,但要满足: (a) 每边2k+1个小头数;(b)对边的小头数之和相等。
填幻方的规律和方法我折腾了好久填幻方这事儿,总算找到点门道。
我一开始真的就是瞎摸索。
幻方这个东西啊,我就知道是把一些数填到一个正方形格子里,让每行每列还有对角线上的数加起来都相等。
我最开始尝试最简单的三阶幻方,就是3×3的方格。
我就随便试数,那肯定是不行啊。
后来我就去研究这个数到底有什么规律。
我发现三阶幻方中间那个数其实挺关键的。
一般用1到9连续的数去填的话,中间的数是5,这个数就好像是个中心枢纽一样的存在。
然后我就试着以5为中心去安排其他数。
我也是试过笨方法的。
我拿纸片写上1到9这几个数字,像摆拼图一样在方格里面摆来摆去。
摆着摆着就发现角上的数也挺有讲究。
像要是1在左上角的话,那和它斜对角的9就好像是一对兄弟似的,它们得在对角线上。
我当时就想着,是不是对角线上的两个数加起来也有什么秘密呢。
后来一算,还真是,这种对角的加起来应该是最大数和最小数的和,也就是1 + 9 = 10 ,而且剩下的配对也得按照大小这样匹配着,才能让每行每列对角加起来都相等。
我填充的时候还犯过错呢。
有一次我没注意这个大小搭配,就只想着把数字填进去,结果每行每列的和都不一样,那就不是幻方了。
再说说更高阶的幻方,比如五阶幻方这种大一些的。
我感觉它更复杂了。
我看别人说有一种方法是先确定一些特殊位置的数,就像是三阶幻方先确定中间数一样。
但是我不是很确定是不是所有的高阶幻方都能完全按照这个思路来。
不过可行的是把这个大的幻方分割成小的三阶幻方那样的小块,然后去尝试按照三阶幻方的规律去安排数,但这个也需要反复调整。
总结一下填幻方的方法,就是先找到关键的数字或者关键的位置。
对于低阶幻方像三阶幻方,以中间数字为核心搭配其他数就是个重点。
然后要在大小数之间做好平衡,别一股脑地只看单个数字,要整体看每行每列还有对角线的和。
高阶幻方可以尝试先找特殊位置数字或者把它分割开去找规律。
不过我这方法可能也不是万能的,幻方这东西还真得慢慢摸索。
要是想真的快速准确填幻方,还是得多自己尝试不同的数字组合呢。
第17卷 第1期2008年1月 云南民族大学学报(自然科学版)Journal of Yunnan Nati onalities University (Natural Sciences Editi on )Vol .17 No .1Jan .20083 收稿日期:2007-04-25.基金项目:西北第二民族学院校内自然科学基金资助项目(2007Y36).作者简介:林淑飞(1979~),女,助教,硕士,主要研究方向:算法理论.构造任意阶幻方的一种方法林淑飞1 朱艳伟2(1.西北第二民族学院计算机系,宁夏银川750021)(2.唐山师范学院数学与信息科学系,河北唐山063000)摘 要 对构造奇数阶幻方的菱形法进行了改进,并对改进方法进行证明.给出了一种构造偶数阶幻方的方法-比例放大法,在证明此方法的同时说明了其构造的幻方不唯一.关键词 幻方;奇数阶;偶数阶;菱形法;比例放大法【中图分类号】O144【文献标识码】A【文章编号】1672—8513(2008)01-0040-04A Method t o Structure A rbitrary Magic SquareL in Shufei 1 Zhu Yan wei2(1.Depart m ent of Computer,North west Second University of Nati onalities,Yinchuan 750021,China )(2.Depart m ent ofMathe matics and I nf or mati on Science,Tangshan Teacher ′s College,Tangshan,063000,China )Abstract:This article i m p r oves the l ozenge method t o structure odd magic square and p r oves it’s i m p r ove ment .A p r oporti on -a mp lified method t o structure the even magic square is given and the method is not only able t o ob 2tain one magic square .Key words:magic square;odd arbitrariness ;even arbitrariness;l ozenge method;p r oporti on -a mp lified method1 改进菱形法构造奇数阶幻方1.1 菱形法描述把n (n 为奇数)阶幻方各边中点依次连接而得到一个斜放的正方形,叫做这个n 阶幻方的菱形块.菱形法首先将奇数沿菱形的各平行边顺序排列好,然后将偶数沿这些边的延长线的方向顺序填入空格,回到这条边的起点时(设想把平面的方阵卷成圆柱),转到下一条边,如此循环往返,就可构成幻方[1,2].菱形法填入偶数的方法很抽象,容易填错.所以本文就将其作了改进.1.2 改进菱形法的描述改进菱形法构造n 阶幻方的步骤如下:步骤1:将n 阶幻方各边中点依次连接而得到一个菱形块;步骤2:从菱形的右上边开始,以斜向下方向,将奇数沿菱形的各平行边顺序填入菱形块中;步骤3:从菱形块的左上边和右下边的元素出发,沿幻方的列按等差数列的规律将偶数填入.如果碰到顶,则折向底;碰到底,则折向顶.其中等差数列的公差为菱形块中的列的公差(n +1).由于菱形块左部分的元素值较大,左边就以n +1递减的方式填入偶数.但第1个被填入的元素是菱形块左上边的元素减1,这样就实现了奇偶转换.右边以相同的方式递增填入偶数.图1是改进菱形法构造5阶幻方的过程.先将1,3,5,…,25以斜向下的方向依次填入菱形块.然后填入偶数,第1列从21开始,先减1填入20,接着都减6,依次填入14,8,2;第2列从11开始,先减1填入10,再减6填入4;第4列从15开始,先加1填入16,再加6填入22;第5列从5开始,先加1填入6,接着都加6,依次填入12,18,24.改进菱形法构造的7阶幻方如图2所示.41.3 改进菱形法的证明改进菱形法构造的幻方的任意相邻的2行,总是其中1行的n-2个元素比另1行相应元素小n+ 1,1个元素比另1行相应元素小1,还有1个元素比另1行相应元素大(n-2)(n+1)+1.可见任意相邻2行的元素和相等,那么所有行的元素之和也都相等.对于任意相邻的2列,总是其中一列的n-2个元素比另一列相应元素小n-1,1个元素比另一列相应元素小2n-1,还有1个元素比另一列相应元素大n(n -1)+1.可见任意相邻2列元素和相等,这样任意两列的元素和也都相等.由于中间行和中间列的元素和相等,所以任意行任意列的元素和都相等.接着比较中间行和主对角线的元素和.主对角线的上半部分元素比中间行相应元素依次小n+1, 2(n+1),…,r(n+1),r(n+1)+1,(r+1)(n+1) +1,…主对角线的下半部分元素比中间行相应元素依次大n+1,2(n+1),…,r(n+1),r(n+1)+1, (r+1)(n+1)+1,…所以主对角线上元素和等于中间行元素和.最后比较中间行和副对角线的元素和.在菱形块内,副对角线的上半部分元素比中间行相应元素依次小n+1,2(n+1),…;副对角线的下半部分元素比中间行相应元素依次大n+1,2(n+1),…在菱形块外,副对角线上半部分元素比中间行相应元素依次大r(n+1)+1,(r-1)(n+1)+1,(r-2)(n +1)+1…;副对角线下半部分元素比中间行相应元素依次小r(n+1)+1,(r-1)(n+1)+1,(r-2)(n+1)+1…可见,副对角线上元素和等于中间行元素和.综上所述,改进菱形法可构造奇数阶幻方.2 比例放大法构造偶数阶幻方对于n(为偶数)阶幻方(记为B),可用4个n/2阶幻方(记为A)按以下方式累积起来构成[3].这样,B就由1~n2中的所有数组成,而且每行元素之和等于2Sn/2+(n/2)33(n/2)2=n(n2+ 1)/2,恰好是n阶幻方的幻和,其中S n/2表示n/2阶幻方的幻和[4],下同.但B的每列元素之和及主副对角线元素之和不等于幻和,所以需交换块1和块2一些位置相同的数,及块3和块4一些位置相同的数.下面按双偶数和单偶数2种情况分别阐述如何交换.2.1 构造双偶数阶幻方按图3方式构造的8阶方阵满足了2个条件,一是用1~64之间数构成,另一是任意行的元素和都相等且等于8阶幻方的幻和260.为了使任意列和主副对角线的元素和也都等于幻和,需对其进行调整.为调整方便可将图3简写为图4的简易幻方.其中3,2和1分别表示在4阶幻方的基础上加3316, 2316和1316.可以看出,简易幻方后4列每列元素之和比前4列每列的大16.若从后4列的每列分出814第1期 林淑飞等:构造任意阶幻方的一种方法给前4列的一列,每列元素之和就等于幻和.如按图5进行调整之后就是一个8阶幻方.对于n =2m ,m 为偶数的情况,只需将块1和块2的m /2行交换,将块3和块4的m /2行交换,如图6所示.变换后,简易幻方的每行、每列及主副对角线上的元素和均为3m ,即为3m 3m 2+23s m .所以此变换法可得到一个n (n =2m )阶幻方.2.2 构造单偶数阶幻方对于n =2m (m 为奇数)阶幻方的构造,如用3阶幻方构造6阶幻方.从图7可看出,交换块1和块2的第2和3行就实现了各列的元素和也等于幻和.但2条对角线的元素和并不等于幻和,主对角线元素和比副对角线大6.为此,用块1和块2的第1行第2列元素的交换取代第2行第2列元素的交换,就可实现主、副对角线元素之和也都等于s 6. 设m =2k +1,则只需满足简易幻方的幻和为6k +3.若将块1和块2靠下的k +1行交换,那么块3和块4每列的和应分别为3k 和3k +3,才能使简易幻方每列元素的和为6k +3.由于原来块3和块4每列和的差为2m -m =2k +1,所以(2k +1-3)/2=k -1就是块3和块4应该交换的行数.但是这样交换以后,主对角线的元素和(3k +3+4k +2-(k -1)=6k +6)比副对角线的(6k )大6,需将主对角线上的一个3和与其在同行的副对角线上的0交换,与此同时,将与3同列的一个0和与0同列的一个3也交换,且那个0和3必须是同行.如图8所示的构造10阶幻方的过程.其实,交换的方法并不唯一.若将块1和块2的k +2行交换,那么块3和块4每列的和应分别为3k -3和3k +6,才能使简易幻方每列元素的和为6k +3.这样块3和块4的(2k +1-9)/2=k -4行需交换.主对角线上元素和(6k +12)比副对角线的(6k -6)大18,需将主对角线上的3个3和与其同行的副对角线上的0交换.每交换一个3和0,就将与3同列的一个0和与0同列的一个3交换,且保证那个024云南民族大学学报(自然科学版) 第17卷和3是同行.这种交换法只适应于m ≥9的情况.3 结论本文对构造奇数阶幻方的菱形法做了改进,还给出了构造偶数阶幻方的比例放大法.2个新方法的复杂度均为O (n ).并对2个方法都进行了证明.其中,偶数阶幻方又按单偶数和双偶数阶幻方,分别描述其比例放大法.且比例放大法构造的单偶数和双偶数阶幻方都不是唯一的.参考文献:[1] 吴鹤龄.幻方及其他[M ].北京:科学出版社,2003.[2] G UY R K .Uns olved Pr oblem s in Nu mber Theory[M ].Ne wYork:Sp ringer,1997.[3] 龚奇夫.构造任意阶幻方的一种方法[J ].沙洋师范高等专科学校学报,2003(5):8-13.[4] 卢开澄,卢华明.组合数学[M ].清华大学出版社,2002.[5] 李超.镶边法造幻方探微[J ].邵阳师范高等专科学校学报,2001,23(5):19-26.(责任编辑 万志琼)启 事本刊已加入清华光盘版(中国知网)、万方数据———数字化期刊群、重庆维普中文科技期刊数据库等多家权威数据库,您在本刊发表文章的同时会被以上网站转载.凡作者向本刊所投稿件,均视为愿意进入上述各期刊数据库,作者著作权使用费已含在本刊所付稿酬中.凡有异议者,请另投他刊或特别声明.本刊编辑部34第1期 林淑飞等:构造任意阶幻方的一种方法。
构造奇数阶幻方完美幻方和对称完美幻方的新方法詹森;王辉丰【摘要】给出构造奇数阶幻方、完美幻方和对称完美幻方的新方法及其证明.这些方法可分别得到((n-1)!)2、((n-1)!)2和2m(2m-1((m-1)!))2个不同的奇数n阶幻方、完美幻方和对称完美幻方.%The new structure methods and their theoretical proof to construct odd n order magic square, perfect magic square and symmetrical perfect magic square were qiven. By using these methods, ((n-1)!)2、((n-1)!)2 and 2m(2m-1((m-1)!))2of different magic squares of order n; perfect magic squares, symmetrical perfect magic squares severally can be obtained.【期刊名称】《海南师范大学学报(自然科学版)》【年(卷),期】2011(024)003【总页数】6页(P265-269,278)【关键词】幻方;完美幻方;对称完美幻方【作者】詹森;王辉丰【作者单位】广东技术师范学院计算机科学系,广东广州510665;海南师范大学数学与统计学院,海南海口571158【正文语种】中文【中图分类】O157.6我们在文[1-5]讨论了构造幻方的各种方法,如加法、六字法和代码法等.在此基础上,我们利用文[1]的余函数进一步研究幻方的构造方法,得到新的更好的结果,分别得到(( n-1)!)2,(( n-1)!)2和2m(2 m-1(( m -1)!))2个不同的奇数n阶幻方、完美幻方和对称完美幻方,而文[1]是局限于只能构造一个这三类幻方.下面我们对余函数[1](n、t是自然数,t|n 表示t被n整除,R(t)表示t除以n的余数)证明结果:预备定理 1)对 n=2m+1(m=1,2,…为自然数),当i=1,2,…,n时,则r (2i)是1~n的自然数,r(4i)也是1~n的自然数.2)对n=2m+1(m为m≠3t+1,t=0,1,2,…的自然数),当i=1,2,…,n时,则r(3i)是 1~n 的自然数;当 m=3t+1,即 n=6t+3(t=0,1,2,…)时,则有证明 1)对n=2m+1(m=1,2,…自然数),当 i=1,2,…,m时,由余函数定义知r(2i)=2i是一个2~2m公差为2的等差有限数列;当i=m+1,m+2,…,2m+1时,r(2i)是一个1~2m+1公差为2的等差有限数列.所以,r(2i)(i=1,2,…,n)是1~n的自然数.对n=2m+1=2(2s)+1=4s+1(s=1,2,…),当i=1,2,…,s时,r(4i)是一个4~4s公差为4的等差有限数列;当i=s+1,…,2s时,r(4i)是一个3~4s-1公差为4的等差有限数列;当i=2s+1,…,3s时,r(4i)是一个2~4s-2公差为4的等差有限数列;当i=3s+1,…,4s+1时,r(4i)是一个1~4s+1公差为4的等差有限数列.所以,对n=2m+1=2(2s)+1=4s+1(s=1,2,…),当i=1,2,…,n时,r(4i)是1~n的自然数.同理可证,对n=2m+1=2(2s+1)+1=4s+3(s=0,1,2,…),当 i=1,2,…,n时,r(4i)是1~n的自然数.综上所述,对n=2m+1(m=1,2,…为自然数),当i=1,2,…,n时,r(4i)也是1~n的自然数.2)对n=2m+1,m=1,2,…为自然数.① 对n=2m+1=2(3t)+1=6t+1(t=1,2,...),当 i=1,2,...,2t时,由余函数定义知r(3i)是一个3~6t公差为3的等差有限数列;当i=2t+1, (4)时,r(3i)是一个2~6t-1公差为3的等差有限数列;当i=4t+1,…,6t+1时,r(3i)是一个1~6t+1公差为3的等差有限数列.所以,对 n=2m+1=2(3t)+1=6t+1(t=1,2,…),当i=1,2,…,n时,r(3i)是1~n的自然数.② 对n=2m+1=2(3t+2)+1=6t+5(t=0,1,2,…),当i=1,2,…,2t+1时,r(3i)是一个3~6t+3公差为3的等差有限数列;当i=2t+2,…,4t+3时,r(3i)是一个1~6t+4公差为3的等差有限数列;当i=4t+4,…,6t+5时,r (3i)是一个2~6t+5公差为3的等差有限数列.所以,对 n=2m+1=2(3t+2)+1=6t+5(t=0,1,2,…),当i=1,2,…,n时,r(3i)是1~n的自然数. ③ 对n=2m+1=2(3t+1)+1=6t+3(t=0,1,2,…),当i=1,2,…,2t+1时,r(3i-1)是一个2~6t+2公差为3的等差有限数列;当i=2t+2,…,4t+2时,r(3i-1)是一个2~6t+2公差为3的等差有限数列;当i=4t+3,…,6t+3时,是一个2~6t+2公差为3的等差有限数列.所以,至此预备定理证毕.我们还不难得到推论对n=2m+1(m=1,2,…为自然数),当i=1,2,…,n时,则r(2i+C),r(4i+C)仍是1~n的自然数;对n=2m+1(m为m≠3t+1,t=0,1,…的自然数),当i=1,2,…,n时,则r(3i+C),r(3i-1)仍是1~n的自然数(其中C为任意给定的自然数).我们分三部份讨论如下:第一步安装基方阵.对n=2m+1(m=1,2,…为自然数),设n阶基方阵[1]A 位于第 i行、第 j列的元素为 a(i,j)(i,j=1,2,…,n),取定a(1,m+1)=mn+1,其余n-1个基数1,n+1,2n+1,…,(m-1)n+1,(m+1)n+1,…,(n-1)n+1可随意安装到如下n-1个位置基数安装完毕后,得到基方阵A的全部基元(或站点).安装于第j列的基元记为ncj+1(j=1,2,…,n),在每一列站点ncj+1的下方(包括该站点),自上而下按ncj+dk(k=1,2,…,n,取定d1=1,其余dk取遍2~n的自然数)的顺序安装相继的数至该列最下面的笫n行;接着,在该站点的上方,自上而下顺序安装后继的数,安装至全列满为止.第二步对基方阵A施行双移,安装到另一个(待安装的)n阶方阵B.把A中第一列每一行的数(即行标[1])移至B中同一行相应于A的基元所在的位置,A中各行的其他元素顺移至B中,就得一个n阶方阵B.这样,经过以上两步所得的方阵B就是一个n=2m+1(m=1,2,…为自然数)阶幻方(见定理1).这种安装与文[2]的六字法有些不同,为了下文叙述方便起见,这里不把以上两步安装称为任安基元双顺法(六字法),而简称为余函数法.由于基数安装结构可有( )n-1!种不同的选择,各列数的安装有(n -1)!种不同的选择,而移入方式也有其他可能的选择,所以,利用以上方法至少可构造出(( n-1)!)2个不同的幻方.定理1 由以上余函数法得到的n=2m+1(m=1,2,…为自然数)阶方阵B是一个幻方.证明设基方阵A安装于第j列的基数为ncj+1(j=1,2,…,n),则由上述行的表达式可得出基方阵A位于第i行、第j列的元素为设方阵B位于第i行、第j列元素为b(i,j),因为方阵A第m+1-k(k=0,1,2,…,m)行的元素向右顺移k个位置,所以综上所述方阵B是一个幻方.例1 构造一个9阶幻方.根据以上余函数法,取c5=4,c1=2,c2=5,c3=0,c4=7,c6=8,c7=1,c8=3,c9=6;dk=k,k=1,2,…,9,我们按以上两步,安装得基方阵A(略)和一个9阶幻方(略).第一步与上述方法相同.第二步对基方阵A施行双移安装到另一个(待安装的)n阶方阵B.设方阵B中位于第i行、第j列的元素为b(i,j),方阵 A中第m+1-k(k=0,1,…,m)行的元素向右顺移2k个位置,所以以上安装第一步与六字法相同,第二步的顺移是用余函数来实现,为了区别于其他方法,我们将以上安装方法叫做余函数法.利用此方法可构造出(( n-1)!)2个不同的完美幻方.定理2 利用余函数法安装得到的n=2m+1(m为m≠3t+1,t=0,1,2,…的自然数)阶方阵B是一个完美幻方.证明n=2m+1(m为m≠3t+1,t=0,1,2,…的自然数)阶方阵B位于第i行、第j列的元素为由余函数的定义、预备定理及其推论得第i行元素的和(求和过程中,2i-1和m+3i-1(i=1,2,…,n)都是固定的)为即各行元素之和都等于幻方常数.第j列元素的和(在求和过程中,j-1和m+j-1(j=1,2,…,n)都是固定的)为即各列元素之和都等于幻方常数.过b(h,1)(h=1,2,…,n)从左上角至右下角的对角线以及与其同方向的泛对角线上的元素b(i,j)而言,有 r(i-j)=h-1(h=1,2,…,n),在求和过程中,n-h和n+m-h都是固定的,所以,其上各元素之和为即从左上角至右下角的对角线以及每一条与其同方向的泛对角线上的元素之和都等于幻方常数.过b(h,n)(h=1,2,…,n)从左下角至右上角的对角线以及与其同方向的泛对角线上的元素b(i,j)而言,有 r(i+j)=h(h=1,2,…,n),在求和过程中h-1和m+h-1都是固定的,所以,其上各元素之和为即从左下角至右上角的对角线以及每一条与其同方向的泛对角线上的元素之和都等于幻方常数.由以上事实可见,方阵B是一个完美幻方.显然,由余函数法可得出(( n -1)!)2个不同的n阶完美幻方(其中n=2m+1,m 为m≠3t+1,t=0,1,2,…的自然数).例2 构造11阶完美幻方.根据余函数法,取c6=5,c1=3,c2=6,c3=8,c4=4,c5=1,c7=0,c8=9,c9=10,c10=2,c11=7,d1=1,d2=5,d3=7,d4=10,d5=3,d6=8,d7=2,d8=9,d9=11,d10=4,d11=6.我们得到基方阵(见图1)和一个11阶完美幻方(见图2).第一步取定a(1,m+1)=mn+1,注意到基数列中处于中心对称位置上的两个数,其和都等于(n-1)n+2,我们共有m对这样的基数,在每对基数中随意选取一个基数,将这m个基数随意安装到如下m个位置:记a(m+1-k,k+1)=nck+1+1(k=0,1,2,…,m-1);余下的m个基数安装到如下m个位置:记a(m+1+k,n-k+1)=ncn-k+1+1(k=1,2,…,m),但必须满足条件ck+cn-k+1=n-1(k=1,2,…,m).基数安装完毕后,得到方阵A的全部基元(或站点).取定d1=1,dm+1=m+1,dn=n,注意到1~n的自然数列中处于中心对称位置上的两个自然数,其和都等于n+1,除d1=1和dn=n外,我们共有m-1对这样的自然数,在每对自然数中随意选取一个自然数,将这m-1个自然数随意排序依次记为dk(k=2,3,…,m);余下的m-1个自然数记为dn-k+1(k=2,3,…,m),但必须满足条件:dk+dn-k+1=n+1(k=2,3,…,m).在第j列基元ncj+1的下方(包括该基元),自上而下按ncj+dk(k=1,2,…,n)的顺序安装相继的数至该列最下面的笫n行;接着,在该站点的上方,自上而下顺序安装后继的数,安装至全列满为止.由此得到基方阵A.第二步与余函数法的第二步相同,所得方阵B就是一个n阶对称完美幻方(见定理3).以上安装方法与余函数法的不同之处,在于对cj,dk的安装增加了对称的要求.我们不妨把以上方法称为对称·余函数法.本文作者已对奇数阶幻方制作成一种“幻方生成器”,取得了专利权[6].对其他各种幻方也可设计、制作新的幻方生成器.定理3 用对称·余函数法得到的方阵B是一个n=2m+1(m为m≠3t+1,t=0,1,2,…的自然数)阶对称完美幻方.证明由定理2知,方阵B是一个n=2m+1(m为m≠3t+1,t=0,1,2,…的自然数)阶完美幻方,我们只须证明方阵B是中心对称,则定理3就已成立.元素 b(i,j)=ncr(2i+j-1)+dr(m+3i+j-1)(i,j=1,2,…,n)的在其中心对称位置上的元素为即方阵B的元素是中心对称的.由此可见,方阵B是一个对称完美幻方.例3 构造一个13阶对称完美幻方.根据对称·余函数法,取c7=6,c1=5,c2=2,c3=9,c4=12,c5=1,c6=4,c13=7,c12=10,c11=3,c10=0,c9=11,c8=8.d7=7,d1=1,d13=13,d2=9,d3=6,d4=3,d5=12,d6=4;d8=10,d9=2,d10=11,d11=8,d12=5.我们得到基方阵A(见图3)和一个13阶对称完美幻方(见图4).【相关文献】[1]詹森,王辉丰.奇数阶对称完美幻方的构造方法[J].海南师范大学学报:自然科学版,2009,22(4):396-402.[2]王辉丰,詹森.关于构造三类奇数阶幻方的新方法[J].海南师范大学学报:自然科学版,2010,23(1):12-15.[3]詹森,王辉丰.关于构造高阶幻方的新方法[J].海南师范大学学报:自然科学版,2009,22(3):250-254.[4]詹森,王辉丰.构造镶边幻方的代码法[J].海南师范大学学报:自然科学版,2010,23(2):152-157.[5]詹森.关于构造幻方的新方法[J].海南师范大学学报:自然科学版,2009,22(2):131-132.[6]詹森,王辉丰.一种幻方生成器:中国,CN2019559570[P/OL].(2011-08-31)[2011-09-09]..。
数阶幻方分为奇数阶幻方和偶数阶幻方,偶数阶幻方又分为单偶数阶幻方和双偶数阶幻方。
奇数阶幻方:罗伯法(适合编制所有的)一居上行正中央,依次斜填切莫忘,上出格时往下填,右出格时左边放,排重便在下格填,角上出格一个样。
六阶幻方,具体的做是:偶阶幻方分两类:双偶数阶幻方和单偶数阶幻方双偶数:四阶幻方,八阶幻方,……4K阶幻方,可用<对称交换法>,方法很简单:1) 把自然数依次排成方阵2) 把幻方划成4×4的小区,每个小区划对角线3) 把这些对角线所划到的数,保持不动4) 把没划到的数,按幻方的中心,以中心对称的方式,进行对调幻方完成!单偶数:六阶幻方,十阶幻方,……4K+2阶幻方一、同心方阵法(不建议用):1) 把幻方分成两个区:一是边框一圈;二是里面一个双偶数方阵,2) 把(3+8K)到(16K2 +8K+2)按双偶数幻方方法填入双偶数方阵3) 把余下的数,在边上试填,调整到符合为止六阶幻方(4×1+2,k=1)就是把11~26填入中间4×4方格中二、象限对称交换法(建议用)以n=10为例,10=4×2+2,这时k=2(1)把方阵分为A,B,C,D四个象限,这样每一个象限肯定是奇数阶。
用楼梯法,依次在A象限,D象限,B象限,C象限按奇数阶幻方的填法填数。
(2)在A象限的中间行、中间格开始,按自左向右的方向,标出k格。
A象限的其它行则标出最左边的k格。
将这些格,和C象限相对位置上的数,互换位置。
(3)在B象限任一行的中间格,自右向左,标出k-1列。
(注:6阶幻方由于k-1=0,所以不用再作B、D象限的数据交换),将B象限标出的这些数,和D象限相对位置上的数进行交换,就形成幻方。
下面是6阶幻方的填法:6=4×1+2,这时k=1 这个方法看起来很麻烦,实掌握了方法就很简单了。