(完整版)任意奇数阶幻方的杨辉斜排法
任意奇数阶幻方最简单公式做法

任意奇数阶幻方最简单公式做法任意奇数阶幻方最简单公式做法奇数阶幻方的填法我有最简易公式,任意奇数阶直接填成(3阶——任意奇数阶通用),先填中心九宫图,然后延伸填成米字形。
在米字划分的八个区内,对称填(1——最大数),(2——最大数减1),(3——最大数减2),(4——最大数减3)。
这八个数为首数,然后按照走向每格依次递加4,或者递减4,依次填完即成!公式简单而且完美对称,绝对最简单!不用位移法,一次填成!任意奇数阶通用。
公式中带入n(即幻方阶数)即可,内九宫格内每格一个公式,正中心数填上(n 平方+1)除以2,.然后以(中心数)(注:以下简称(中))为坐标和原始数;得出周围八个格内数,如下:中上左为(中)减1. 中下右为(中)加1.中上为(中)减(n-1). 中下为(中)加(n-1).中上右为(中)加(2n-3). 中下左为(中)减(2n-3).中左为(中)加(n+1). 中右为(中)减(n+1).然后以这八个数为首数,向外延伸成米字形,填法如下:中上左方向每格递减2. 中下右方向每格递加2.中上方向每格递加2. 中下方向每格递减2.中上右方向每格递减2. 中下左方向每格递加2.中左方向每格递加2. 中右方向每格递减2.下面填米字隔开的八个区域:将(1 )填入右上顶角的下一格,(以它为首数每格递加4)从上往左下依次填完一行,再折回从上往左下依次填完第二行,以此类推,填完本区。
将(n的平方)填入右下顶角的上一格,(以它为首数每格递减4)从下往左上依次填完一行,再折回从下往左上依次填完第二行,以此类推,填完本区。
将(2 )填入右下顶角的左一格,(以它为首数每格递加4)从下往左上依次填完一行,再折回从下往左上依次填完第二行,以此类推,填完本区。
将(n的平方-1)填入左下顶角的右一格,(以它为首数每格递减4)从下往右上依次填完一行,再折回从下往右上依次填完第二行,以此类推,填完本区。
将(3 )填入左下顶角的上一格,(以它为首数每格递加4)从下往右上依次填完一行,再折回从下往右上依次填完第二行,以此类推,填完本区。
幻方的制作方法

奇数阶幻方,偶数阶幻方,六阶幻方的制作方法罗伯法(适合编制所有的奇阶幻方)一居上行正中央,依次斜填切莫忘,上出格时往下填,右出格时左边放,排重便在下格填,角上出格一个样。
六阶幻方,具体的做是:偶阶幻方分两类:双偶数阶幻方和单偶数阶幻方双偶数:四阶幻方,八阶幻方,……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方格中传说在很久很久以前,黄河里跃起一匹龙马,马背上驮着一幅图;洛水里也浮出一只神龟,龟背上也驮着一幅图。
这两幅图上都用圆点来表示一组数字,马背上的那幅称为“河图”,龟背上的那幅称为“洛书”。
(参见图1)再后来,经过人们研究,发现图中右边的那幅“洛书”,其实是一幅纵横图,即用1到9这9个数字组成一幅数字图,使它横的每行相加、竖的每列相加以及对角线相加,其和都等于15(参见图2)。
我们知道,纵横图就是今天所说的“幻方”,一般地,是指把从1到十的自然数排成纵横各有m 个数,并且使同行、同列及同一对角线上的n个数的和都相等的一种方阵,其中涉及的是组合数学的问题。
而前面所说的“洛书”,就是我国最早的一个三阶幻方。
图1 河图洛书图2 纵横图长期以来,纵横图一直被看作是一种数字游戏。
一直到南宋时期的数学家杨辉,才真正把它作为一个数学问题而加以深入的研究。
任意奇数阶幻方的杨辉斜排法

可见,杨辉口诀是在利用5×5的方格,斜排9个数后,按照他的步骤,仍然是画出5×5方格的3阶的幻方,如图1e。
图2菱中取方的画法
现在,我们很多人用的是“取方框”画法 。即在5×5的方阵中,取出3×3方框来,如图2b的红框。红框外的1,是走到框内的绿方块中,红框外的9,是走到框内的蓝方块中。因此1、9没有“对易”。同样,3、7也没有“相更”。因此,就没有“上下对易,左右相更”了。所以,就不需要“四维挺出”了。因此,现在的画法,与原来的口诀不一致了。
任意奇数阶幻方的杨辉斜排法
———————————————————————————————— 作者:
———————————————————————————————— 日期:
任意奇数阶幻方的杨辉斜ຫໍສະໝຸດ 法——对杨辉口诀的讨论范贤荣2016.3.8
关于三阶幻方的排法,我国古代数学家杨辉给出了一个巧妙的排法:“九子斜排,上下对易,左右相更,四维挺出”。按照这个口诀,画出“上下对易,左右相更”之后,形成图1d的图面。因此,必定有一个“四维挺出”的步骤。最后得到“戴九履一,左三右七,二四為肩,六八為足”的三阶幻方。见图1。
所以,我根据作图的次序,将杨辉的口诀,演绎成:
各子斜排为菱形,中间取方当作城,
城外有子城内空,四围都往城中进。
挺进多少方可止,几阶就挺几步深。
注1:“四围”就是上下左右四边。“都往城中进”,因此是相向而行,都到城中。
注2:“几阶就挺几步深”。如3阶进3步,5阶进5步,7阶进7步……后续亦如此类推。见图2。
下面,我将2~13各奇数阶,由菱方阵演变成幻方的情况,列于后。
图3 5阶菱方阵与幻方
图47阶菱方阵与幻方
图59阶菱方阵与幻方
奇数阶幻方的经典方法-罗伯法

奇数阶幻⽅的经典⽅法-罗伯法
所谓幻⽅,也教纵横图,就是在n×n的⽅阵中放⼊1到n2个⾃然数:在⼀定的布局下,其各⾏、各列和两条对⾓线上的数字之和正好都相等。
这个和数就叫做“幻⽅常数”或幻和。
构造幻⽅的⽅法:
奇数阶幻⽅,也就是3阶、5阶、7阶……幻⽅,那么如何构造这样的幻⽅呢?
我们可以采取罗伯法(也叫连续摆数法),其法则如下:
把“1”放在中间⼀列最上边的⽅格中,从它开始,按对⾓线⽅向(⽐如说按从左下到右上的⽅向)顺次把由⼩到⼤的各数放⼊各⽅格中,如果碰到顶,则折向底,如果到达右侧,则转向左侧,如果进⾏中轮到的⽅格中已有数或到达右上⾓,则退⾄前⼀格的下⽅。
按照这⼀法则建⽴5阶幻⽅的⽰例如下图:
罗伯法(连续摆数法)的助记⼝诀:
1 居上⾏正中央,依次斜填切莫忘。
上出框界往下写,右出框时左边放。
重复便在下格填,⾓上出格⼀个样。
1 居上⾏正中央——数字 1 放在⾸⾏最中间的格⼦中
依次斜填切莫忘——向右上⾓斜⾏,依次填⼊数字
上出框界往下写——如果右上⽅向出了上边界,就以出框后的虚拟⽅格位置为基准,将数字竖直降落⾄底⾏对应的格⼦中
右出框时左边放——同上,向右出了边界,就以出框后的虚拟⽅格位置为基准,将数字平移⾄最左列对应的格⼦中
重复便在下格填——如果数字{N}右上的格⼦已被其它数字占领,就将{N+1}填写在{N}下⾯的格⼦中
⾓上出格⼀个样——如果朝右上⾓出界,和“重复”的情况做同样处理。
幻方的算法-Merzirac法生成奇阶幻方

幻方的算法—Merzirac法生成奇阶幻方奇阶幻方当n为奇数时,我们称幻方为奇阶幻方。
可以用Merzirac法与loubere法实现,Merzirac法与loubere 法称为斜步法,即向斜方向走一步;也可用国际象棋之马步也可构造出更为神奇的奇幻方,故命名为horse法,即马步法。
下面我详细介绍Merzirac法Merzirac法生成奇阶幻方Merzirac法最简单的方法为:1、在第一行居中的方格内放1 ;2、以后按顺序,向右斜上方填写数字(称为斜步);3、若出到方阵上方,把该数字填到本该所在列的最下格;4、若出到方阵右方,把该数字填到本该所在行的最左格;5、若右上已有数字,或出到方阵右上(即对角线方向),则把数字填入上一个数字的下一格,即在n 的下方放入n+1(称为跳步),再按上述方法放置到2n,在2n的下方放入2n+1,在3n的下方放入3n+1,……依次填完所有数字即可完成任何一个奇阶幻方。
下面是用此方法构成的5阶幻方,每一行、每一列、对角线的和都为65,我们将此和值称为幻和值,用f(n)表示,f(5)=65。
65656565656565 65 65 65 65 65斜步法可以向4个方向依次填写数字,即右上、右下、左上、左下4个方向,每种斜步都可有2种跳步,即左(右)跳步、上(下)跳步。
下面我总结所有的Merzirac法(斜步法):我们用坐标轴的方法,将左右方向设为X轴,向右为X,向左为-X;将上下方向设为Y轴,向上为Y,向下为-Y。
一般的,令矩阵[1,1]为向右走一步,向上走一步,用X+Y表示,,[-1,0]为向左走一步,用-X表示,[0,-1]为向下走一步,用-Y表示。
则斜步可以表示为X+Y,{X∈{[1,0], [-1,0]},Y∈{[0,1], [0,-1]}}∪{Y∈{[1,0], [-1,0]},X∈{[0,1], [0,-1]}}。
对于X+Y相应的跳步可以为-X,-Y。
那么上面的5阶幻方就是用X+Y斜步(即右上一步),-Y跳步(即向下一步)构成。
幻方算法

幻方算法首先,奇数的幻方,第一行中间放1,然后依次2、3、4一直往右上填,越界则反向,如果该位置有了数字,则排在前一个数的下面。
原则:非右上则下其次,4的倍数的的幻方。
设N%4等于0,则以每个4*4画对角,不在对角线上的数字与相对应数字对换。
比如8*8的,(0,1)与(7,6)对换,类推。
原则:横竖下标对N比余,相等或相加等于3则忽略,不做对换最后,最复杂的最后一种情况,单偶数的幻方。
我找了资料,但是没有完全好用的,总有缺陷概念:N=4m+2方法1:ACDB按上图将其分为4个部分,分别填入1-N*N/4组成的奇数幻方,N*N/4+1-N*N/2组成的奇数幻方,N*N/2+1-N*N/4*3组成的奇数幻方,N*N/4*3-N*N组成的奇数幻方将AD中m列互换。
不是镜面互换,而是平移。
将BC中m-1列互换,同上。
方法2:LUX法L U X41 14 1423 23 32先做一个N/2的奇数幻方,然后把这个幻方的每个数x替换成一个田字的四个数(x-1)*4+1——x*4这四个数的排列顺序有3种,前m+1行的按L排列,后m-1行的按X排列,中间一行中间一列按L排列,其余的按U排列。
下面是我写的JAVA实现类,2种单偶数我都实现了(第一种方法的实现被我注释掉了),还有一个监测的方法,仅供参考。
public class HuanClass {private int N;private int SUM;private int MAX;private int[][] RE;public HuanClass(int val) throws Exception{N=val;MAX=N*N;if(MAX%2==1)SUM=(MAX+1)/2*N;else SUM=(MAX+1)*N/2;RE=new int[N][N];if(N<3)throw new Exception("shit");else if(N%2==1)RE=CountOdd(N);else if(N%4==0)CountFour();elseCountEven();}private int[][] CountOdd(int n){int[][] IRE=new int[n][n];int i=0;int j=n/2;int tmp=1;while(true){if(j>=n)j=0;if(i<0)i=n-1;if(IRE[i][j]==0){IRE[i--][j++]=tmp++;}else{i+=2;j--;if(j<0)j=n-1;if(i>=n)i=i%n;if(IRE[i][j]==0)IRE[i--][j++]=tmp++;else break;}}return IRE;}private void CountFour(){int fillCount=1;for(int i=0;i<N;i++){for(int j=0;j<N;j++){RE[i][j]=fillCount;fillCount++;}}int tmp;for(int i=0;i<N;i++){for(int j=0;j<N/2;j++){if(i%4!=j%4&&(j%4+i%4)!=3){tmp=RE[i][j];RE[i][j]=RE[N-i-1][N-j-1];RE[N-i-1][N-j-1]=tmp;}}}}/*private void CountEven(){int halfN=N/2;int[][] tmpIArr=CountOdd(halfN);for(int i=0;i<halfN;i++){for(int j=0;j<halfN;j++){RE[i][j]=tmpIArr[i][j];RE[i+halfN][j]=tmpIArr[i][j]+halfN*halfN*3;RE[i][j+halfN]=tmpIArr[i][j]+halfN*halfN*2;RE[i+halfN][j+halfN]=tmpIArr[i][j]+halfN*halfN; }}int m=(halfN-1)/2;int tmp;for(int j=0;j<m;j++){for(int i=0;i<halfN;i++){tmp=RE[i][j];RE[i][j]=RE[i+halfN][j];RE[i+halfN][j]=tmp;if(j<m-1){tmp=RE[i][j+halfN];RE[i][j+halfN]=RE[i+halfN][j+halfN];RE[i+halfN][j+halfN]=tmp;}}}}*/private void CountEven(){int halfN=N/2;int m=(halfN-1)/2;int[][] Seq=CountOdd(halfN);char[][] SeqSign=new char[halfN][halfN]; for(int i=0;i<SeqSign.length;i++){for(int j=0;j<SeqSign[i].length;j++){ SeqSign[i][j]='L';}}int i=halfN-1;for(int l=1;l<m;l++,i--){for(int j=0;j<halfN;j++){SeqSign[i][j]='X';}}for(int j=0;j<halfN;j++){if(j==halfN/2)SeqSign[i][j]='L';elseSeqSign[i][j]='U';}for(i=0;i<halfN;i++){for(int j=0;j<halfN;j++){int beginNum=(Seq[i][j]-1)*4;switch (SeqSign[i][j]){case 'L':RE[i*2][j*2]=beginNum+4;RE[i*2+1][j*2]=beginNum+2;RE[i*2][j*2+1]=beginNum+1;RE[i*2+1][j*2+1]=beginNum+3;break;case 'U':RE[i*2][j*2]=beginNum+1;RE[i*2+1][j*2]=beginNum+2;RE[i*2][j*2+1]=beginNum+4;RE[i*2+1][j*2+1]=beginNum+3;break;case 'X':RE[i*2][j*2]=beginNum+1;RE[i*2+1][j*2]=beginNum+3;RE[i*2][j*2+1]=beginNum+4;RE[i*2+1][j*2+1]=beginNum+2;break;}}}}public int[][] getHuan(){return RE;}public boolean check(){for(int i=0;i<N;i++){int tmpSum1=0;int tmpSum2=0;for(int j=0;j<N;j++){tmpSum1+=RE[i][j];tmpSum2+=RE[j][i];}if(tmpSum1!=SUM||tmpSum2!=SUM)return false;}int sum1=0,sum2=0;for(int i=0;i<N;i++){sum1+=RE[i][i];sum2+=RE[i][N-1-i];}if(sum1!=SUM||sum2!=SUM)return false;return true;}}幻方维基百科,自由的百科全书跳转到: 导航, 搜索幻方,有时又称魔方(该称呼现一般指立方体的魔術方塊)或纵横图,由一组排放在正方形中的整数组成,其每行、每列以及两条对角线上的数之和均相等。
(奥数)幻方-奇数阶幻方的编排方法

幻方(二)——奇数阶幻方的编排方法在幻方(一)——三阶幻方中我们已经学习了三阶幻方的一般编排方法,但那种方法是比较麻烦的,又不容易掌握。
于是,人们在分析研究的基础上,总结了一些简便易学的编排方法。
一、九子排列法宋朝数学家杨辉在《续古摘奇算法》中,总结“洛书”幻方的编排方法时说:三阶幻方的编排方法是“九子排列,上下对易,左右相更,四维挺出”。
这四个句子是什么意思呢?我们通过下面的一组图来加以理解。
先画出一个3×3的“九宫格”,并在第二列上、下方和第二行左、右边各添加一个虚线格子,把1~9这九个数字按顺序写在如上图所示的三排斜线上,然后上、下对调,左右交换,(因为我们是在格子上进行排列,就不必再进行“四维挺出”了),最后将虚线格子擦掉就可以了。
利用这种方法我们就很容易得到幻方(一)中例1的图A。
但是这种方法有一定的局限性,只能编排三阶幻方,如果要编排5×5,7×7,9×9,……等奇数阶幻方又该怎么办呢?我们继续看第二种方法。
二、罗伯法请大家注意观察幻方(一)中例1的图H,可以总结出下面的编排方法:1、在第一行正中央的方格子中填上1;2、按斜上方向在1的右上角填入2,但出上框了,这时要把2改填在2所在这一列的最下边;3、按斜上方向在2的右上角填入3,又出右框了,把3改填在3所在这一行的最左边;(上图1)4、按斜上方向在3的右上角填入4,但与先填入的1重合了,这时就把4改填在3的下面,然后把5、6依次按斜上方向填入方格内;5、按斜上方向在6的右上角填入7,但出框的右上角,这时就把7改填在6的下面,(与重合相同)。
重复上面的做法,把8、9依次填入方格中,这样就得到了图2,与左边的图H完全相同。
---------请同学们在事先准备好的方格子中把这种方法练习一遍!-----------这种编排奇数阶幻方的方法叫“罗伯法”。
使用“罗伯法”时总是向右上的斜行方向进行编排。
编排过程中会出现五种情况:“第一行正中央排什么数?”、“排出上框怎么办?”、“排出右框怎么办?”、“排重复了怎么办?”、“排出右上角怎么办?”为了便于记忆,我们把罗伯法概括成下面的的几句话:1居上行正中央,依次斜排莫忘记;上出框时往下写,右出框时左边放;重叠就在下格填,右上出框一个样。
奇数阶幻方填写的小窍门

奇数阶幻方填写的小窍门最近我在七年级的数学希望杯的二试辅导中碰到一题十分常见的数学题:在3×3的方格表中填入九个不同的正整数:1,2,3,4,5,6,7,8和x,使得各行、各列所填三个数的和都相等。
请确定x的值,并给出一种填数法。
这个题对于每一位数学教师来说都是再熟悉不过的,这是上学时必定做到过的九宫格,也叫“幻方”。
很容易算得x=9,并且填好方格也并非难事。
在《射雕英雄传》中黄蓉曾破解九宫格有一口诀:戴九履一,右三左七,二四为肩,六八为足。
当然填法并非只有这唯一的一种,在解这一题时,我的师傅王永生老师恰好经过我的办公桌看到这一题,他就问我这个题我是怎么填的,有没有特别的窍门,我当时的反应愣了一下,这个熟悉的不能再熟悉的九宫格,我除了知道《射雕英雄传》中的这一口诀,我还从没想过填这么一个简单的九宫格还有什么窍门。
王老师说出了他知道的一种填九宫格的窍门:先把1填在第一行的中间一格,接下来的数依次填在前一个数的右上方。
如果右上位置已经填了数字,那么下一个数字就填在前一个数字的下方。
整个过程中,如果遇到最右边,那么换到最左边继续;如果遇到最上面,那么换到最下面继续。
按照上述方法就可以得到九宫格的答案。
而且这一规律也可以用来填9×9的方格。
我之后进行了填写实践,还查了资料,发现这一规律确实存在,而且可以应用于所有奇数阶幻方的填法,不过仅限于等差数列,先将数列按从小到大的顺序排列,也按这个顺序填入格中。
将第一个数放在第一行的中间位置,依次向右上方斜填,上出幻方时就放在那一列的最下格,右出幻方时放在那一行的最左格,排重了就放在该填位置的下边一格。
还有口诀:“一居上行正中央,依次斜填切莫忘;上出框时向下放,右出框时向左放;排重便在下格填,右上排重一个样。
”一个小小的幻方中也蕴含着有趣的数学规律。
1/ 1。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
任意奇数阶幻方的杨辉斜排法
——对杨辉口诀的讨论
范贤荣2016.3.8
关于三阶幻方的排法,我国古代数学家杨辉给出了一个巧妙的排法:“九子斜排,上下对易,左右相更,四维挺出”。
按照这个口诀,画出“上下对易,左右相更”之后,形成图1d的图面。
因此,必定有一个“四维挺出”的步骤。
最后得到“戴九履一,左三右七,二四為肩,六八為足”的三阶幻方。
见图1。
图1 杨辉口诀的画法
可见,杨辉口诀是在利用5×5的方格,斜排9个数后,按照他的步骤,仍然是画出5×5方格的3阶的幻方,如图1e。
图2 菱中取方的画法
现在,我们很多人用的是“取方框”画法。
即在5×5的方阵中,取出3×3方框来,如图2b的红框。
红框外的1,是走到框内的绿方块中,红框外的9,是走到框内的蓝方块中。
因此1、9没有“对易”。
同样,3、7也没有“相更”。
因此,就没有“上下对易,左右相更”了。
所以,就不需要“四维挺出”了。
因此,现在的画法,与原来的口诀不一致了。
所以,我根据作图的次序,将杨辉的口诀,演绎成:
各子斜排为菱形,中间取方当作城,
城外有子城内空,四围都往城中进。
挺进多少方可止,几阶就挺几步深。
注1:“四围”就是上下左右四边。
“都往城中进”,因此是相向而行,都到城中。
注2:“几阶就挺几步深”。
如3阶进3步,5阶进5步,7阶进7步……后续亦如此类推。
见图2。
下面,我将2~13各奇数阶,由菱方阵演变成幻方的情况,列于后。
图3 5阶菱方阵与幻方
图4 7阶菱方阵与幻方
图5 9阶菱方阵与幻方
图6 11阶菱方阵与幻方
图7 11阶幻方
图8 13阶菱方阵
图9 13阶幻方。