偶数阶幻方填法
偶数阶幻方的填充方法与步骤

偶数阶幻方的填充方法与步骤嘿,朋友们!今天咱来聊聊偶数阶幻方的填充方法和步骤。
这玩意儿可有意思啦,就像搭积木一样,一块一块地把数字摆好,最后就会出现一个神奇的图案!咱先说说这偶数阶幻方是啥。
简单来说,就是一个正方形的格子里,填上一些数字,让每行、每列和对角线上的数字之和都相等。
这是不是挺神奇的?就好像这些数字都商量好了似的。
那怎么填充呢?别着急,听我慢慢道来。
咱就拿四阶幻方来举例子吧。
首先,把 1 放在第一行的中间位置,这就像给这个幻方找到了一个起点。
然后呢,就开始一格一格地填数字啦。
下一个数字要放在右上角的格子里,如果右上角的格子已经有数字了,那就放到下面的格子里。
就这么一格一格地填下去,就像在走迷宫一样,有趣得很呢!比如说,填到 2 的时候,右上角的格子已经有数字了,那就把 2 放在 1 的下面。
然后 3 又该放到右上角了,4 又会根据规则放到 3 的下面。
这样一直填下去,直到所有的格子都填满了。
你看,这过程是不是挺有意思的?哎呀,你想想看,就这么一个个数字填进去,最后就能形成一个那么神奇的图案,这不是很奇妙吗?就好像是数字们在跳舞一样,最后跳出了一支完美的舞蹈。
再来说说六阶幻方。
其实方法也是差不多的,只是格子更多了,就像一个更大的舞台,让数字们去尽情表演。
你说这偶数阶幻方是不是很像一个魔法盒子?打开它,就能看到各种神奇的数字组合。
在填充的过程中,可别粗心大意哦,一个不小心填错了,那可就前功尽弃啦!就像盖房子,一块砖没放好,可能整座房子都会歪掉。
而且啊,你还可以自己创造一些新的方法来填充幻方,说不定你能发现更有趣的规律呢!这就像是在探索一个未知的世界,充满了惊喜和挑战。
总之呢,偶数阶幻方的填充方法和步骤虽然有点复杂,但只要你有耐心,慢慢去尝试,肯定能掌握的。
这就像是学骑自行车,一开始可能会摔倒,但多练习几次,你就能骑得稳稳当当啦!相信自己,你一定可以的!去试试吧,让我们一起在偶数阶幻方的世界里遨游!。
偶数阶幻方构造方法

偶数阶幻方构造方法我折腾了好久偶数阶幻方构造方法,总算找到点门道。
一开始我真的是瞎摸索,就感觉这偶数阶幻方特别神秘。
我先试了最简单的4阶幻方构造,我就按照常规思路,想把1到16这些数字依次摆放。
我先从左上角开始放1,然后按照顺序横着摆。
结果发现最后得到的根本不是幻方,每行每列以及对角线上的数字之和都不一样。
我当时就有点懵,知道自己这个方法肯定不对。
后来我看书才知道,原来对于4阶幻方有一种双偶阶幻方的构造方法。
我就跟着这个方法重新试。
这方法就像搭积木一样,先把1到16分成四组。
然后先确定四个角的数字,把最小的那一组数字里最小的数放在左上角,最大的数放在右下角,第二小的数放在右上角,第二大的数放在左下角。
这就像给房子先打四个桩基一样。
再慢慢地按照一定的规则往里面填数,比如从左到右,从上到下,遇到已经填过数字的格子就按斜线方向跳着填。
这个过程一定要特别仔细,我第一次填的时候就因为粗心大意跳错了格,结果又失败了。
对于6阶这样的双偶阶幻方也可以用类似的方法。
不过分组的时候是分成六组,操作起来就会更复杂一点。
我有一次在构造6阶幻方的时候,前面填角上的数字就弄错了,因为要根据数字的大小顺序和分组情况准确放置,我当时一马虎就搞错了,结果全盘皆输。
对于单偶阶幻方,比如说10阶,构造起来就更加复杂了。
我还没完全掌握特别好的通用方法。
我现在知道一种方法是先把它当成大的双偶阶幻方构造,然后再进行调整。
但这个调整的过程中很容易出错,要根据具体的数字和位置关系来操作。
我觉得要是构造偶数阶幻方的话,最重要的就是得细心,不管是分组还是按规则填数,差一点就全不对了。
而且每个不同规模的偶数阶幻方可能都有自己需要注意的小细节,一定要先搞清楚基本的构造框架。
像4阶幻方可以当做最基本的模型去研究,把它搞透彻了,再去弄6阶、8阶之类的可能就会好一些。
构造幻方

构造幻方所谓幻方,也教纵横图,就是在n×n的方阵中放入1到n2个自然数:在一定的布局下,其各行、各列和两条对角线上的数字之和正好都相等。
这个和数就叫做“幻方常数”或幻和。
幻方分为奇数阶幻方、偶数阶幻方(单偶阶幻方、双偶阶幻方),下面就这三类幻方的构造分别示范。
奇数阶幻方的经典方法-罗伯奇数阶幻方,也就是3阶、5阶、7阶……幻方,那么如何构造这样的幻方呢?我们可以采取罗伯法(也叫连续摆数法),其法则如下:把“1”放在中间一列最上边的方格中,从它开始,按对角线方向(比如说按从左下到右上的方向)顺次把由小到大的各数放入各方格中,如果碰到顶,则折向底,如果到达右侧,则转向左侧,如果进行中轮到的方格中已有数或到达右上角,则退至前一格的下方。
按照这一法则建立5阶幻方的示例如下图:罗伯法(连续摆数法)的助记口诀:1居上行正中央,依次斜填切莫忘。
上出框界往下写,右出框时左边放。
重复便在下格填,角上出格一个样。
1居上行正中央——数字1放在首行最中间的格子中依次斜填切莫忘——向右上角斜行,依次填入数字上出框界往下写——如果右上方向出了上边界,就以出框后的虚拟方格位置为基准,将数字竖直降落至底行对应的格子中右出框时左边放——同上,向右出了边界,就以出框后的虚拟方格位置为基准,将数字平移至最左列对应的格子中重复便在下格填——如果数字{N}右上的格子已被其它数字占领,就将{N +1}填写在{N}下面的格子中角上出格一个样——如果朝右上角出界,和“重复”的情况做同样处理。
偶数阶幻方的一种制作方法——双偶阶、单偶阶幻方1.双偶阶幻方(中心对称交换法)n为偶数,且能被4整除(n=4,8,12,16,20……)(n=4k,k=1,2,3,4,5……)先说明一个定义。
互补:如果两个数字的和,等于幻方最大数和最小数的和,即n×n+1,称为互补。
先看看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 纵横图长期以来,纵横图一直被看作是一种数字游戏。
一直到南宋时期的数学家杨辉,才真正把它作为一个数学问题而加以深入的研究。
六阶幻方解法

六阶幻方解法标准化管理处编码[BBX968T-XBB8968-NNJ668-MM9N]
一、奇阶幻方:罗伯法(适合编制所有的奇阶幻方)
一居上行正中央,依次斜填切莫忘,
上出格时往下填,右出格时左边放,
排重便在下格填,角上出格一个样。
例:用1-25组成五阶幻方。
偶阶幻方分两类:双偶数阶幻方和单偶数阶幻方
双偶数:四阶幻方,八阶幻方,……4K阶幻方,
可用<对称交换法>,方法很简单:
1) 把自然数依次排成方阵
2) 把幻方划成4×4的小区,每个小区划对角线
3) 把这些对角线所划到的数,保持不动
4) 把没划到的数,按幻方的中心,以中心对称的方式,进行对调。
?
单偶数:六阶幻方,十阶幻方,……4K+2阶幻方
方法是很繁的,有一种称<同心方阵法>:
1) 把幻方分成两个区:一是边框一圈;二是里面一个双偶数方阵,
2) 把(3+8K)到(16K2 +8K+2)按双偶数幻方方法填入双偶数方阵
3) 把余下的数,在边上试填,调整到符合为止。
例题:用自然数1-36完成六阶幻方。
首先因为4×1+2,k=1,把11~26填入中间4×4方格中,
然后将1-10,27-36这20个自然数成对填入余下空中。
“九子斜排,上下对易,左右相更,四维挺出”。
偶阶幻方的解法(文档4篇)

偶阶幻方的解法(文档4篇)以下是网友分享的关于偶阶幻方的解法的资料4篇,希望对您有所帮助,就爱阅读感谢您的支持。
第1篇偶阶幻方的填法第一种:n=4*m+2, m为自然数1)将n阶方阵分为四个小魔方阵ABCD如下排列:B C D A因为n*n=4*(2*m+1)*(2*m+1),记u=n/2=2*m+1,分为1~u*u,u*u+1~2*u*u,2*u*u+1~3*u*u,3*u*u+1~4*u*u 即在调用子函数的时候分别如下面传递参数: A(0),B(u*u),C(2*u*u),D(3*u*u)分别在ABCD中按照前面的填法把奇数阶填好(注意加上所传参数作为基数,每一个元素都要加上这个值),最后做如下交换:(1)B中第0~(m-1)-1行中元素与C中相对应元素交换(2)D中第(n-1)-m+1~(n-1)共m行的每行中的元素与A中相对应元素交换(3)交换D:(u+m,m)与A中对应元素(矩阵中心值)(4)交换D:(n-1,m)与A中对应元素(实际为矩阵最大值n*n) 所谓对应位置,指相对于小魔方阵的左顶角的相对的行列位置。
上面的这些你可以用数学进行证明,利用魔方阵常数(注意n阶的和u阶的关系) 第二种:n=4*m,m为自然数因为行列都是4的倍数,因而可以将整个矩阵分为每4*4的小矩阵。
先判断一个数是否在划为4*4小矩阵的对角线上,如果在,则填该位置的数为n*n-i+1(i为该元素的相对位置,从1开始,比如n阶的第s行第t个元素则其i=s*n+t) 如果不在,则填上i。
(4的倍数幻方,4,8,12可以。
6、10是不行的。
这样才有一般填法,4的方法是先画好格,连接对角线,这样有8格也就是一半的格子被斜线划过,然后从头到尾,数格子,没有斜线的格子就填上数的数,那么第一排就是1不填,2填,3填,4不填,第二排就是5填,6不填,7不填,8填三四排一样,然后从尾到头数,填划了斜线的格子,就成4介幻方;8阶就是对角线画斜线外,相邻边的中点相连再画4条线,形状就如4个4阶幻方;12阶就是三等分点,画9个如四阶的。
幻方

二、单偶幻方的解法将n阶单偶幻方表示为4m+2阶幻方。
将其等分为四分,成为如下图所示A、B、C、D四个2m+1阶奇数幻方。
A CD BA 用1至()221m +填写成2m+1阶幻方;B 用()2211m ++至2*()221m +填写成2m+1阶幻方;C 用2*()221m ++1至3*()221m +填写成2m+1阶幻方;D 用3*()221m ++1至4*()221m +填写成2m+1阶幻方;在A 每行取m 个小格(中心格及一侧对角线格为必换格,其余m-1格只要不是另一侧对角线格即可),也就是说在A 中间一行取包括中心格在内的m 个小格,其他行左侧边缘取m 个小格,将其与D 相应方格内交换;B 与C 任取m-1列相互交换。
6阶幻方就是4*1+2,那么m 就是1。
在A 中间一行取中心格1个小格,其他行左侧边缘取1个小格,将其与D 相应方格内交换;B 与C 接近右侧m-1列相互交换(6阶幻方m-1=0,则不用互换)。
如下图用Strachey 法生成的6阶幻方:也就是A用1至25填写成5阶幻方;B用26至50填写成5阶幻方;C用51至75填写成5阶幻方;D用76至100填写成5阶幻方。
(5阶幻方的填法你会的话)第二步,在A每行取m个小格(中心格及一侧对角线格为必换格,其余m-1格只要不是另一侧对角线格即可),简单地说,就是说在A中间一行取包括中心格在内的m个小格,其他行左侧边缘取m个小格,将其与D相应方格内交换;B与C在最右侧取m-1列相互交换。
10阶幻方就是4*2+2,那么m就是2。
在A中间一行取包括中心格在内的2个小格,其他行左侧边缘取2个小格,将其与D相应方格内交换;B与C在最右侧取1列相互交换。
幻方问题公式

幻方问题公式
幻方是一个由数字组成的正方形阵列,其中每行、每列和每个对角线的数字之和都是相同的。
以下是幻方的计算公式:
对于任意n阶幻方,每行、每列和每个对角线的数字之和可以用以下公式表示:
S = n(n^2 + 1) / 2
其中,n是幻方的阶数。
当n为奇数时,称为奇阶幻方。
当n为偶数时,幻方分为双偶幻方和单偶幻方。
对于奇阶幻方,可以使用Merzirac法生成。
具体步骤如下:
1. 在第一行居中的方格内放1,依次向右上方填入2、3、4…。
2. 如果右上方已有数字,则向下移一格继续填写。
3. 如果出到方阵下方,把该数字填到本该填数所在列上方相应的格。
4. 如果出到方阵右方,把该数字填到本该填数所在行的左方相应的格。
5. 如果落步格已有数字,则向上移一格继续填写。
对于偶阶幻方,可以使用以下公式计算每行、每列和每个对角线的数字之和:S = n(n/2)^2 + (n/2)^2
其中,n是幻方的阶数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
偶数阶幻方填法以4阶为例,说说偶数阶的填法:首先,按顺序写下16个数:12345678910111213141516接下来固定对角线上数字不动(这里是1、6、11、16和4、7、10、13),其它数字作左右对换,如2与3换,5与8换等,得到下面的排列:13248675121011913151416继续固定对角线,其他数字作上下对称变换,如8与12换,2与15换等,得到如下排列:11514412679810115133216这就是四阶幻方,每行每列四个数字之和均为34,其他偶数阶幻方填法可类推!奇数阶幻方——口诀1坐边中间,斜着把数填;出边填对面,遇数往下旋;出角仅一次,转回下格间。
一、奇数阶纪方的构造方法(楼梯法)。
把1(或最小的数)放在第一行正中;按以下规律排列剩下的n*n-1个数:1)每一个数放在前一个数的右上一格;2)如果这个数所要放的格已经超出了顶行那么就把它放在底行,仍然要放在右一列;3)如果这个数所要放的格已经超出了最右列那么就把它放在最左列,仍然要放在上一行;4)如果这个数所要放的格已经超出了顶行且超出了最右列那么就把它放在前一个数的下一行同一列的格内;5)如果这个数所要放的格已经有数填入,处理方法同4)。
图示:* 1 * * 1 ** * * * * ** * * * * 2* 1 * * 1 *3 * * 3 * ** * 2 4 * 2* 1 * * 1 63 5 * 3 5 *4 * 2 4 * 2* 1 6 8 1 63 5 7 3 5 74 * 2 4 * 28 1 63 5 74 9 2奇数阶幻方的一种用公式表达的构造方法:设x是要填入的数,(xx,yy)是坐标。
坐标如何确定呢?k= (x-1) div n +(n+3) div 2 + (x-1)yy=k- (k-1) div n *np= (n+1) div 2 + (x-1)- (x-1) div nxx=n+1-p+(p-1) div n * n二、双偶阶(4k)阶幻方的构造方法。
就是说,阶数可以被4整除。
看看4阶幻方的制作方法:先把数字,按顺序写(从左到右,从上到下):1 2 3 45 6 7 89 10 11 1213 14 15 16然后把对角线,换成互补的数字。
定义:互补:如果两个数字的和,等于幻方最大数和最小数的和,即n*n+1,称为互补。
16 2 3 135 11 10 89 7 6 124 14 15 1人们从4阶幻方的制作方法,找到了构造双偶阶幻方的方法:对于n=4k阶幻方,我们先把数字按顺序填写。
写好后,按4*4把它划分成k*k个方阵。
把每个小方阵的对角线,象制作4阶幻方的方法一样,换成互补的数字,就构成幻方。
事实上,有些小方阵的对角线是连着的。
但是因为没有办法画图,我只能这样子描述。
双偶阶幻方另一种用PASCAL程序语句表达的构造的方法如下:for i:=1 to n dofor j:=1 to n dobeginif j mod 4>1 then m:=1else m:=0;k:=n-i-(n-2*i+1)*m;if i mod 4>1 then m:=1else m:=0;L:=n-j+1-(n-2*j+1)*m;a[i, j]:=k*N+L;end;三、单偶阶(4k+2)幻方的构造阶数是偶数,但是,又不能被4整除。
这是最难的一种幻方。
一种构造n=4k+2幻方的方法:(1) 先排出4k的双偶阶幻方(2) 根据幻方的性质,每个数都同时加上8k+2(3) 把它扩展成为4k+2的方阵。
这样,四周包围着一圈。
我们只要把1,2,3……,8k+2, (4k+2)^2, (4k+2)^2-1, ……,(4k)^2+1+8k+2这些数字,填入最外一圈,使得:对角线两端,每行、每列两端数字互补。
当然,最后圈的两横,两列各数之和要等于变幻常数。
以制作6阶幻方为例:先制作出4阶幻方。
方阵的每个数字,加上8k+2=10再把它扩大成6阶,如下图:* * * * * ** 26 12 13 23 ** 15 21 20 18 ** 19 17 16 22 ** 14 24 25 11 ** * * * * *我们只要把1,2,3,……,9,10,36,35,34, (27)填入外圈。
不过,当n较大时,外圈的填法也不太容易。
有一种公式来填外圈。
坐标(j,i) 为j行i列的。
先固定填下这10个数:a[1,1]=1 a[n,1]=4 a[n-1,1]=10 a[2,n]=3 a[3,n]=5 a[4, n]=7a[n,n-2]=2 a[n,n-1]=9 a[1,2]=6 a[1,3]=8当n=4k+2时,a[j,i]=11,12,…,k+9 (j=1, i=4..k+2)k+10,k+11,…,2k+8 (j=5..k+3, i=n )2k+9,2k+10,…,3k+7 (j=n ,i=2k+2..3k)3k+8,3k+9,…,5k+5 (j=2k+3..4k, i=1)5k+6,5k+7,…,6k+4 (j=n, i=3k+1..4k-1)6k+5,6k+6,…,7k+3(j=k+4…2k+2, i=n)7k+4,7k+5,…,8k+2 (j=1, i=k+3..2k+1)按公式算出来后,实际上外圈已经填好了一半了。
剩下来的工作,只要把剩下的相对应元素,填下去。
(同行两端的数相对应、同列两端的数相对应、两条对角线两端的数相对应,每对之和为n*n+1)。
介绍另外一种构造单偶阶幻方的方法:<1> 基本图(是个6阶方阵)4 2 4 2 1 21 3 1 3 4 34 2 1 2 4 21 3 4 3 1 34 2 4 2 1 21 3 1 3 4 3这个方阵要把它按2*2把大方阵分割成3*3个格,每个格子里4个数都是1,2,3,4,只是方向上不同。
<2> 如果要作的幻方不是6阶,是更大的阶数:每次同时在最上面、最下面加入下面方阵:4 2 4 2 1 21 3 1 3 4 3每加一次,多出4行来,直至想要的阶数。
这样加后是个长方形方阵,左边、右边怎么办?左边都用4 31 2同时,右边都用1 24 3填充,每次多出4列来,直至想要的阶数。
下面是加成10*10方阵的例子:4 3 4 2 4 2 1 2 1 21 2 1 3 1 3 4 3 4 34 3 4 2 4 2 1 2 1 21 2 1 3 1 3 4 3 4 34 3 4 2 1 2 4 2 1 21 2 1 3 4 3 1 3 4 34 3 4 2 4 2 1 2 1 21 2 1 3 1 3 4 3 4 34 3 4 2 4 2 1 2 1 21 2 1 3 1 3 4 3 4 3如果把每2*2的小格子四个数,看成一个格子,这是一个2k+1奇数阶方阵。
画个(2k+1)*(2k+1)的格子吧,格子画大一点,我们要按奇数阶幻方的填法,填写这些格子,只不过每次要填写的是四个数。
方向跟着制作出来的参考图方向一样。
例:我们要做一个6阶的幻方。
参考图当然是用<1> 基本图,不需要迭加了。
然后,列成3*3个大格子,大格子的顺序我们按奇数幻方的顺序填写,小格子里的顺序按1,2,3,4这四个数字的方向填写,按顺序每次填入4个数:* * 4 2 * * * * 4 2 * ** * 1 3 * * * * 1 3 * ** * * * * * * * * * * ** * * * * * * * * * * ** * * * * * * * * * 5 6* * * * * * * * * * 8 7=============================================* * 4 2 * * * * 4 2 * ** * 1 3 * * * * 1 3 * *12 10 * * * * 12 10 * * * *9 11 * * * * 9 11 * * * ** * * * 5 6 16 14 * * 5 6* * * * 8 7 13 15 * * 8 7============================================= …………继续直至填完。
三、练习1、用1、4、7、10、13、16、19、22、25填出三阶幻方。
2、用95、85、75、65、55、45、35、25、15填出三阶幻方。
3、用1—81八十一个自然数填出一个九阶幻方。
4、用1/2、1/3、2/3、1/4、3/4、1/6、1/12、5/12、7/12九个分数摆一个三阶幻方。
奇数阶幻方程序/*** n阶幻方程序* 完成者:meteor135* 完成日期:2003.9.8* 编译环境:VC6.0*/#include <iostream.h>#include <iomanip.h>#include <math.h>void showFangzhen(int n);int main(){//输出10组幻方for(int n = 0; n < 10; n ++) showFangzhen(2*n+1);cout<<"Press enter to quit!"; cin.get();return 0;}void showFangzhen(int n){if(!(n%2)) return;int i,j,**array;//为指针分配动态内存array=new int*[n];for(i=0; i<n; i++){array[i] = new int[n];}//初始化数组for(i=0; i<n; i++){for(j=0; j<n; j++){array[((n-1)/2+i-j+n)%n][(3*n-1+j-2*i)%n]=i*n+j+1;//or//array[(n+2*i-j)%n][((n-1)/2+n+j-i)%n]=i*n+j+1; }}//输出n阶幻方cout<<n<<"阶幻方:"<<endl;for(i=0; i<n; i++){for(j=0;j<n;j++){cout<<setw(int(log10(n*n))+2)<<array[i][j];}cout<<endl;}cout<<endl;//释放动态内存for(i=0; i<n; i++){delete[] array[i];//原来是delete array[i];}delete[] array;}可能是n阶幻方的程序这是我的幻方程序,在TC3。