五阶幻方简便算法

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/03 15:47:38

五阶幻方简便算法
五阶幻方简便算法

五阶幻方简便算法
五阶幻方
10 11 17 23 `4
22 `3 `9 15 16
14 20 21 `2 `8
1` 7` 13 19 25
9 `3 22 16 15
21 20 14 `8 `2
13 `7 `1 25 19
5 `24 18 12 `6
17 11 10 `4 23
17 24 `1 8 15
23 `5 `7 14 16
`4 `6 13 20 22
10 12 19 21 `3
11 18 25 `2 `9
下面这些构造方法都是比较适合于编程的.构造幻方分奇数阶幻方、4n型偶数幻方、4n+2型的偶数幻方(以下简称双偶数、单偶数).
构造奇数阶较简单,常用的是连续摆数法.下面的n均指阶数,在这里(y,x)表示第y横行的第x个数.
(1)在第一行的正中间(即[1,(n+1)/2])放上1 (2)若数a的位置在(y,x),则a+1的位置在: (y-1,x+1),若有这个位子且里面没数 (n,x+1),若y=1且x1 (y+1,x),若x=n且y=1或(y,x)已经有数.(y,x)已经有数的充要条件是a=n(mod n) (3)所构成的(n×n)方即为一个幻方.
我们还可以把连续摆数法推广,先定义几个概念:
普通向量:正常走步的情况.(即上面第一种情况)正常走步记作(b,a).中断向量:即走到(1,n)这个格子或(y,x)已经有数的情况.记作(d,c) 下面是几个推广的情况:(1,-1)(0,1);(1,-1)(0,2);(2,1)(1,-2);(2,1)(1,-1);(2,1)(1,0);(2,1)(1,2)
下面是构造双偶数阶幻方:
对称法:把双偶数型的幻方分成四个正方形,在左上角正方形中每行每列各取一半打上○(实际上就是使无论从每行还是每列来看都刚好有一半有○,一半无○.)然后向剩下的三个小方块中映象(镜像对称),于是整个方阵都布好了○.(用电脑实行则可以选择在该布○的地方填上-1).
接下来该填数了.适用于电脑的方法:向所有格子内填数,(推荐x,y分别从1~n的双重计数循环):若(y,x)没有○,则填入(y-1)*n+x;若(y,x)中有○,则填入(n-y+1)*n+x+1.适用于笔算的方法:从左上角依次1~n*n填数,遇上○则不填,这个数字还是要跳过去.填完后,把方阵旋转180度后再从1~n*n往○里填数,没有○的地方就不填,跳过数字.因为对称的原理,因此这回填的数刚好是上次跳过的数,这次跳过的刚好是上次填过的数.就形成了一个双偶数阶幻方.
下面介绍一下构造单偶数阶幻方的方法——斯特雷奇法
仍然是把单偶数阶幻方分成A、B、C、D四个小方阵,若按平面直角坐标系来看则第一、二、三、四象限分别为A、C、B、D(请一定注意A、B、C、D的位置!)再用连续摆数法将A、B、C、D填入数字,A方阵用1~a^2,B方阵用(a^2+1)~2a^2,C方阵用(2a^2+1)~3a^2,D用数字(3a^2+1~4a^2).其中a=n/2.
这样的方阵还需进行调整.在A的中间一行左侧第2列起取m个方格(这里m=(n-2)/4),即取((n/4+0.5),2)~((n/4+0.5),(2+m))这几个方格,再取A中其它行的左边m个方格.把这些方格中的数字同D中相应方格中的数字对调.然后在C中各列的从右边起的m-1个方格重的数字同B中对调.
这样形成的大方阵就是幻方了.

无条件数列图排除法(用于所有质幻方)
一、数列图排除法( 用于所有质数)
私人定义:1、把x^2个数平均分成x列,每列数字统称为数列。每列数数末到后数列数首是一个过渡,因此把每数列首数称为过数。
2、幻方的对角线称为h线,斜线为45°,首尾贯通,简称斜。
方法:画好x宽格图,...

全部展开

无条件数列图排除法(用于所有质幻方)
一、数列图排除法( 用于所有质数)
私人定义:1、把x^2个数平均分成x列,每列数字统称为数列。每列数数末到后数列数首是一个过渡,因此把每数列首数称为过数。
2、幻方的对角线称为h线,斜线为45°,首尾贯通,简称斜。
方法:画好x宽格图,在其一格中写1,(如1在h线上,2不在该h线上)在与1非横非竖格中写2。
以1到2的移动方向依次写到x。
(提醒:填写第x+1个数是一个过数,x+1的填写位置决定幻方对错。填写数列共出现4种情况,以下每小条两种。)
1、(1)、该数列不成斜。与数字1横竖的格画叉。数字 (x+1)∕2不在h线上,与1斜的格画叉。
(2)、该数列不成斜。与数字1横竖的格画叉。数字 (x+1)∕2在h线上,过1不平行x+1∕2所在的h线画叉 。
(3)、该数列成斜。与数字1横竖的格画叉。 数字(x+1)∕2不在h线上,与1斜的格画叉。平行数列的h线与1水平线的交格画圈,以1和圈为始终,在2∕x-1处的格中画t,过t平行数列的斜线之外全画叉。
(4)、该数列成斜。与数字1横竖的格画叉。 数字(x+1)∕2在(在)h线上,与1斜的格不画叉。平行数列的h线与1水平线的交格画圈,以1和圈为始终,在2 ∕ (x-1)处的格中画t,过t平行数列的斜线之外全画叉。
2。余下的格子是第x+1数的所有位置
(总结:另起一个图,1~x按原先的位置写好,第x+1个数字按草图与下格其一写好,每个数列第2个数开始按1到2的移动方向填写,过数按x到x+1的移动方向填写。)



列如五幻方:
第一种情况 数列不成斜,数字(x+1)∕2不在h线上 。
1 # # # # 1 24 17 15 8 1 14 22 10 18
# # 4 # 20 13 6 4 22 25 8 16 4 12
# 2 # # 9 2 25 18 11 19 2 15 23 6
# # # 5 23 16 14 7 5 13 21 9 17 5
# # 3 #   12 10 3 21 19 7 20 3 11 24
第二种情况 数列不成斜,数字(x+1)∕2在h线上。
1 # # # # 1 7 13 19 25 1 19 7 25 13
# # 5 18 24 5 6 12 24 12 5 18 6
# # 4 10 11 17 23 4 17 10 23 11 4
# 3 # 22 3 9 15 16 15 3 16 9 22
# 2 # 14 20 21 2 8 8 21 14 2 20

# 4 22 6 20 4 13 20 13 6 4 22
1 # # # # 1 15 24 8 17 1 24 17 15 8
# 3 10 19 3 12 21 12 10 3 21 19
# 5 14 23 7 16 5 23 16 14 7 5
# 2 18 2 11 25 9 9 2 25 18 11
第三种情况 数列成斜,数字(x+1)∕2不在h线上。
1 # t # @ 1 20 9 23 12 1 18 10 22 14
# # # # 5 19 8 22 11 5 17 9 21 13 5
# # # 4 # 7 21 15 4 18 8 25 12 4 16
# # 3 # 25 14 3 17 6 24 11 3 20 7
# 2 # # 13 2 16 10 24 15 2 19 6 23
第四种情况 数列成斜,数字(x+1)∕2在h线上。
# 5 # # # 9 5 21 17 13 8 5 22 19 11
1 # # @ t 1 22 18 14 10 1 23 20 12 9
# # # 2 23 19 15 6 2 24 16 13 10 2
# # 3 # 20 11 7 3 24 17 14 6 3 25
# 4 # # 12 8 4 25 16 15 7 4 21 18 王明亮编

收起

22 `3 `9 15 16
14 20 21 `2 `8
1` 7` 13 19 25
9 `3 22 16 15
21 20 14 `8 `2
13 `7 `1 25 19
5 `24 18 12 `6
17 11 10 `4 23
17 24 `1 8 15
23 `5 `7 14 16
`4 `6 13 20 22
10 12 19 21 `3
11 18 25 `2 `9
吗???!!!嘻嘻

方法同三维幻方“九子斜排,上下对易,左右相更,四维挺出”,先斜着排(1-5,6-10...),然后上下交换,左右交换,差不多就ok了,你自己再揣摩一下吧