幻方

18 篇文章 1 订阅
5 篇文章 0 订阅

       幻方(Magic Square)是一种将数字安排在正方形格子中,使每行、列和对角线上的数字和都相等的方法。

种类


  完全幻方

  完全幻方指一个幻方行、列、主对角线及泛对角线各数之和均相等。

乘幻方

  乘幻方指一个幻方行列、对角线各数乘积相等。

高次幻方

n阶幻方是由前n^2(n的2次方)个自然数组成的一个n阶 方阵,其各行、各列及两条对角线所含的

  n个数的和相等。例子:(三阶幻方,幻和为15,)
4
9
2
3
5
7
8
1
6
三阶幻方中间必填5
  高次幻方是指,当组成幻方各数替换为其2,3,...,k次幂时,仍满足幻方条件者,称此幻方为k次幻方。

反幻方

反幻方的定义:在一个由若干个排列整齐的数组成的正方形中,图中任意一横行、一纵行及对角线的几个数之和不相等,具有这种性质的图表,称为“反幻方”。
反幻方与正幻方最大的不同点是幻和不同,正幻方所有幻和都相同,而反幻方所有幻和都不同。所谓幻和就是幻方的任意行、列及 对角线几个数之和。如下图3阶反幻方的比较。
反幻方

反幻方

图中边框外围的数字之和就是幻和。红色为 偶数,黑色为奇数。
可以说反幻方是一种特殊的幻方。反幻方的幻和可以全部不同,也可以部分相同。如下图多种3阶反幻方。
多种反幻方

多种反幻方

三阶幻方

8
1
6
3
5
7
4
9
2
如图,1和7相加除以2=4
1和3相加除以2=2
……

2起源记载编辑

在一个由若干个排列整齐的数组成的正方形中,图中任意一横行、一纵行及 对角线的几个数之和都相等,具有这种性质的图表,称为“幻
《周易本义》中的《洛书》,一个三阶幻方

《周易本义》中的《洛书》,一个三阶幻方

方”。中国古代称为“ 河图”、“ 洛书”,又叫“ 纵横图”。
九宫洛书蕴含奇门遁甲的布阵之道。九宫之数源于 易经中,《易经》。幻方也称纵横图、魔方、魔阵,它是科学的结晶与吉祥的象征,发源于中国古代的洛书—— 九宫图。公元前一世纪,西汉宣帝时的博士 戴德在他的政治礼仪著作《大戴礼·明堂篇》中就有“二、九、四、七、五、三、六、一、八”的洛书九宫数记载。洛书被世界公认为组合数学的鼻祖,它是中华民族对人类的伟大贡献之一。同时,洛书以其高度抽象的内涵,对中国古代政治伦理、 数学、天文气象、哲学、医学、宗教等等都产生了重要影响。在远古传说中,于治国安邦上也具有积极的寓意!包括洛书在内的幻方自古以来在亚、欧、 美洲不少国家都被作为驱邪避凶的吉祥物,这种古代地域广泛的图腾应该说是极其少见的。1975年 上海人民出版社出版的自然辩证法丛书《自然科学大事年表》,对于幻方作了特别的述说:“公元前一世纪,《 大戴礼》记载,中国古代有象征吉祥的河图洛书纵横图,即为九宫算,被认为是现代‘组合数学’最古老的发现。”还附了全书唯一的插图!
2500年前,孔子在他研究《易经》的著作《系词上传》中记载了:“河出图,洛出书,圣人则之。”最早将数
杜勒的《忧郁》,内含四阶幻方

杜勒的《忧郁》,内含四阶幻方

字与洛书相连的记载是2300年前的《庄子·天运》,它认为:“天有六极 五常,帝王顺之则治,逆之则凶。九洛之事,治成德备,监照下土,天下戴之,此谓上皇。”明代数学家 程大位在《算法统宗》中也曾发出“数何肇?其肇自图、书乎?伏羲得之以画卦,大禹得之以序畴,列圣得之以开物”的感叹,大意是说,数起源于远古时代黄河出现的河图与洛水出现的洛书,伏羲依靠河图画出八卦,大禹按照洛书划分九州,并制定治理天下的九类大法,圣人们根据它们演绎出各种治国安邦的良策,对人类社会与自然界的认识也得到步步深化。大禹从洛书 中数的相互制约,均衡统一得到启发而制定国家的法律体系,使得天下一统,归于大治,这是借鉴思维的开端。这种活化思维的方式已成为科学灵感的来源之一。从洛书发端的幻方在数千年后更加生机盎然,被称为具有永恒魅力的数学问题。十三世纪,中国南宋数学家杨辉在世界上首先开展了对幻方的 系统研究,欧洲十四世纪也开始了这方面的工作。著名数学家费尔玛、欧拉都进行过幻方研究,如今,幻方仍然是组合数学的研究课题之一,经过一代代数学家与数学爱好者的共同努力,幻方与它的变体所蕴含的各种神奇的科学性质正逐步得到揭示。它已在 组合分析、实验设计、 图论数论、群、对策论、纺织、工艺美术、程序设计、人工智能等领域得到广泛应用。1977年,4阶幻方还作为人类的特殊语言被 美国旅行者1号、2号飞船携入太空,向广袤的宇宙中可能存在的外星人传达人类的文明信息与美好祝愿。

3历史发展编辑

幻方又称为 魔方,方阵或厅平方,它最早起源于中国。宋代数学家 杨辉称之为 纵横图
幻方的幻在于无论取哪一条路线,最后得到的和或积都是完全相同的。
大约两千多年前 西汉时代,流传 夏禹治水时,黄河中跃出一匹神马,马背上驮着一幅图,人称「 河图」;又洛水河中浮出一只神龟,龟背上有一张象征吉祥的图案称为「 洛书」.他们发现,这个图案每一列,每一行及 对角线,加起来的数字和都是一样的,这就是我们所称的幻方.也有人认为"洛书"是外星人遗物;而"河图"则是描述了 宇宙生物(包括外星人)的基因排序规则,幻方是外星人向地球人的自我介绍.另外在上海浦东 陆家嘴地区挖出了一块元朝时代伊斯兰教信徒所挂的玉挂,玉挂的正面写着:「万物非主,惟有真宰, 默罕默德,为其使者」,而玉挂的另一面就是一个四阶幻方.
关于幻方的起源,中国有“河图”和“洛书”之说。相传在远古时期, 伏羲氏取得天下,把国家治理得井井有条,感动了上天,于是黄河中跃出一匹龙马,背上驮着一张图,作为礼物献给他,这就是“河图”,也是最早的幻方。伏羲氏凭借着“河图”而演绎出了 八卦,后来大禹治洪水时,洛水中浮出一只大乌龟,它的背上有图有字,人们称之为“洛书”。“洛书”所画的图中共有黑、白圆圈45个。把这些连在一起的小圆和数目表示出来,得到九个。这九个数就可以组成一个纵横图,人们把由九个数3行3列的幻方称为3阶幻方,除此之外,还有4阶、5阶...
后来,人们经过研究,得出计算任意 阶数幻方的各行、各列、各条对角线上所有数的和的 公式为:
S=n(n^2+1) /2
其中n为幻方的阶数,所求的数为S.
幻方最早记载于中国公元前500年的春秋时期《 大戴礼》中,这说明中国人民早在2500年前就已经知道了幻方的排列规律。而在国外,公元130年,希腊人塞翁才第一次提起幻方。
中国不仅拥有幻方的发明权,而且是对幻方进行深入研究的国家。公元13世纪的数学家杨辉已经编制出3-10阶幻方,记载在他1275年写的《续古摘厅算法》一书中。在欧洲,直到1514年,德国著名画家 丢勒才绘制出了完整的四阶幻方。
而在国外,十二世纪的阿拉伯文献也有六阶幻方的记载,中国的考古学家们曾经在西安发现了阿拉伯文献上的五块六阶幻方,除了这些以外,历史上最早的四阶幻方是在 印度发现的,那是一个完全幻方(后面会提到),而且比中国的杨辉还要早了两百多年,印度人认为那是天神的手笔.1956年西安出土一铁片板上所刻的六阶幻方(古 阿拉伯数字)十三世纪, 东罗马帝国才对幻方产生兴趣,但却没有什么成果.
直到十五世纪,住在君士坦丁堡的魔索普拉才把中国的纵横图传给了欧洲人,欧洲人认为幻方可以镇压妖魔,所以把它作为 护身符,也把它叫作「Magic Square」.
欧洲最早的幻方是在德国一位名画家Albrecht Dure的画里的,
上面有一个四阶幻方,而这个幻方的下面两个数字正好是这幅画的制作年代(1514年).这是欧洲最古老的幻方.
清末民初数学家寿孝天自攥:
1956年冬,陕西省西安市郊元朝安西王府出土的金属铁板:

4同词异义编辑

玉器幻方

玉器幻方

幻方,玉质。
它是伊斯兰教徒的护身信念物。
长方形,上有两个贯耳可以系绳佩挂。正面为圆凸面,印刻阿拉伯文,背面方框4行16格,每格填一个阿拉伯数字。
具有一定神秘性。 [1]  

5纪录编辑

中国取得不少幻方世界纪录:幻方专家 李文第一位构造成功10阶标准 幻立方,第一位构造出最低阶729阶五次幻方,和多项平方幻方世界纪录,幻方专家苏茂挺第一位构成功32阶完美平方幻方.等。
提醒大家注意,任意阶幻方 构造法,任意维幻方构造法,任意次幻方构造法,都早已找到。
不存在最大阶幻方的世界纪录之类.
对于各种媒体报导的幻方 世界之最,很多是不实报导,不存在未解最大阶数幻方。

6幻方欣赏编辑

中国幻方网站: [1]  
中国幻方博客:
国高次幻方网站: [2]  
日本多维幻方网站: [3]  
富兰克林的幻方: [4]  
九阶平方幻方: [5]  
12阶幻方

12阶幻方

十二阶完美幻方(每个2×2子 矩阵和为286):

7构造原理编辑

在《射雕英雄传》中郭黄二人被 裘千仞追到黑龙潭,躲进 瑛姑的小屋。瑛姑出了一道题:数字1~9填到三行三列的表格中,要求每行、每列、及两条对角线上的和都相等。这道题难倒了瑛姑十几年,被 黄蓉一下子就答出来了。
4 9 2
3 5 7
8 1 6
这就是一个最简单的3阶平面幻方。因为幻方的智力性和趣味性,很游戏和玩具都与幻方有关,如捉放曹、我们平时玩的六面体,也成为学习编程时的常见问题。
幻方又称 纵横图九宫图,最早记录于中国古代的洛书。夏禹治水时,河南洛阳附近的大河里浮出了一只乌龟,背上有一个很奇怪的图形,古人认为是一种祥瑞,预示着洪水将被夏禹王彻底制服。后人称之为"洛书"或"河图",又叫河洛图。
南宋数学家杨辉,在他著的《续古摘奇算法》里介绍了这种方法:只要将九个自然数按照从小到大的递增次序斜排,然后把上、下两数对调,左、右两数也对调;最后再把中部四数各向外面挺出,幻方就出现了。(摘自《趣味数学辞典》)
最简单的幻方就是平面幻方,还有立体幻方、高次幻方等。对于立体幻方、高次幻方世界上很多数学家仍在研究,只讨论平面幻方。
对平面幻方的构造,分为三种情况:N为奇数、N为4的倍数、N为其它偶数(4n+2的形式)
1、 N 为奇数时,最简单:
⑴ 将1放在第一行中间一列;
⑵ 从2开始直到n×n止各数依次按下列规则存放:
按 45°方向行走,如向右上
每一个数存放的行比前一个数的行数减1,列数加1
⑶ 如果行列范围超出矩阵范围,则回绕。
例如1在第1行,则2应放在最下一行,列数同样加1;
⑷ 如果按上面规则确定的位置上已有数,或上一个数是第1行第n列时,
则把下一个数放在上一个数的下面。
2、 N为4的倍数时
采用 对称元素交换法。
首先把数1到n×n按从上至下,从左到右顺序填入矩阵
然后将方阵的所有4×4子方阵中的两 对角线上位置的数关于方阵中心作对
称交换,即a(i,j)与a(n+1-i,n+1-j)交换,所有其它位置上的数不变。
(或者将 对角线不变,其它位置对称交换也可)
**以上方法只适合于n=4时**
3、 N 为其它 偶数
当n为非4倍数的偶数(即4n+2形)时:首先把大方阵分解为4个 奇数(2m+1阶)子方阵。
按上述奇数阶幻方给分解的4个子方阵对应赋值
由小到大依次为上左子阵(i),下右子(i+v),上右子阵(i+2v),下左子阵(i+3v),
即4个子方阵对应元素相差v,其中v=n*n/4
四个子矩阵由小到大排列方式为 ① ③
④ ②
然后作相应的元素交换:a(i,j)与a(i+u,j)在同一列做对应交换(j<t或j>n-t+2),
a(t-1,0)与a(t+u-1,0);a(t-1,t-1)与a(t+u-1,t-1)两对元素交换
其中u=n/2,t=(n+2)/4 上述交换使行列及 对角线上元素之和相等。
C语言实现 [6]  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
#include"stdio.h"
#include"math.h"
inta[256][256];
intsum;
intcheck();
voidins(intn);
voidmain()
{
inti,j,n,k,t,p,x;
scanf ( "%d" ,&n);
sum=(n*n+1)*n/2;
if (n%2==1)ins(n); //奇数幻方
if (n%4==2) //单偶数幻方
{
k=n/2;
ins(k);
for (i=0;i<k;i++)
for (j=0;j<k;j++)
{
a[i][j+k]=a[i][j]+2*k*k;
a[i+k][j]=a[i][j]+3*k*k;
a[i+k][j+k]=a[i][j]+k*k;
}
t=(n-2)/4;
for (i=0;i<k;i++)
for (j=0;j<k;j++)
{
if ((j<t)&&(i<t))
{
p=a[i][j];
a[i][j]=a[i+k][j];
a[i+k][j]=p;
}
if ((j<t)&&(i>k-t-1))
{
p=a[i][j];
a[i][j]=a[i+k][j];
a[i+k][j]=p;
}
if ((i>=t&&i<=k-t-1)&&(j>=t&&j<t*2))
{
p=a[i][j];
a[i][j]=a[i+k][j];
a[i+k][j]=p;
}
if (j>1&&j<=t)
{
p=a[i][j+k];
a[i][j+k]=a[i+k][j+k];
a[i+k][j+k]=p;
}
}
}
if (n%4==0) //双偶数幻方
{
x=1;
for (i=0;i<n;i++)
for (j=0;j<n;j++)
a[i][j]=x++;
for (i=0;i<n;i++)
for (j=0;j<n;j++)
{
if (i%4==0&& abs (i-j)%4==0)
for (k=0;k<4;k++)
a[i+k][j+k]=n*n-a[i+k][j+k]+1;
elseif(i%4==3&&(i+j)%4==3)
for (k=0;k<4;k++)
a[i-k][j+k]=n*n-a[i-k][j+k]+1;
}
}
if (check(n)==1)
{
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
printf ( "%5d" ,a[i][j]);
printf ( "\n" );
}
}
}
intcheck(intn) //检验是否是幻方
{
inti,j,sum1=0,sum2;
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
sum1+=a[i][j];
if (sum1!=sum)return0;
sum1=0;
}
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
sum1+=a[i][j];
if (sum1!=sum)return0;
sum1=0;
}
for (sum1=0,sum2=0,i=0,j=0;i<n;i++,j++)
{
sum1+=a[i][j];
sum2+=a[i][n-j-1];
}
if (sum1!=sum)return0;
if (sum2!=sum)return0;
elsereturn1;
}
voidins(intn) //单偶数幻方的输入
{
intx,y,m;
x=0;
y=n/2;
for (m=1;m<=n*n;m++)
{
a[x][y]=m;
if (m%n!=0)
{
x--;y++;
if (x<0)x=x+n;
if (y==n)y=n-y;
}
else
{
x++;
if (x==n)x=x-n;
}
}
}
c++语言实现
(1)求奇数幻方
#include<iostream.h>
#include<iomanip.h>
intmain()
{
intn,x,y,tot=0,i,j,a[100][100]={0};
cout<< "请输入一个奇数" <<endl;
cin>>n;
a[i=n/2][j=0]=++tot;
i--;
j--;
while (tot<=n*n)
{
i<0?i=n-1:i=i;
j<0?j=n-1:j=j;
if (a[i][j])
{
i=x;
j=y+1;
}
a[i][j]=++tot;
x=i;y=j;
i--;j--;
}
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
cout<<setw(3)<<a[i][j];
cout<<endl;
}
return0;
}
(2)求单偶幻方
#include<iostream.h>
#include<iomanip.h>
intmain()
{
intn,i=0,j=0,a[100][100],tot=0;
cout<< "请输入4的倍数" <<endl;
cin>>n;
for (i=0;i<n;i++)
for (j=0;j<n;j++)
{
a[i][j]=++tot;
}
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
{
if (i%4==j%4||i%4+j%4==3)
a[i][j]=n*n+1-a[i][j];
}
}
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
{
cout<<setw(4)<<a[i][j];
}
cout<<endl;
}
return0;
}
奇阶幻方
当n为 奇数时,我们称幻方为奇阶幻方。可以用Merzirac法与loubere法实现,根据我的研究,发现用 国际象棋之马步也可构造出更为神奇的奇幻方,故命名为horse法。
偶阶幻方
当n为偶数时,我们称幻方为偶阶幻方。当n可以被4整除时,我们称该偶阶幻方为双偶幻方;当n不可被4整除时,我们称该偶阶幻方为单偶幻方。可用了Hire法、Strachey以及YinMagic将其实现,Strachey为单偶模型,我对双偶(4m阶)进行了重新修改,制作了另一个可行的 数学模型,称之为Spring。YinMagic是我于2002年设计的模型,他可以生成任意的偶阶幻方。
在填幻方前我们做如下约定:如填定数字超出幻方格范围,则把幻方看成是可以无限伸展的图形,如下图:
Merzirac法生成奇阶幻方
在第一行居中的方格内放1,依次向右上方填入2、3、4…,如果右上方已有数字,则向下移一格继续填写。如下图用Merziral法生成的5阶幻方:
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
loubere法生成奇阶幻方
在居中的方格向上一格内放1,依次向右上方填入2、3、4…,如果右上方已有数字,则向上移二格继续填写。如下图用Louberel法生成的7阶幻方:
30 39 48 1 10 19 28
38 47 7 9 18 27 29
46 6 8 17 26 35 37
5 14 16 25 34 36 45
13 15 24 33 42 44 4
21 23 32 41 43 3 12
22 31 40 49 2 11 20
horse法生成奇阶幻方
先在任意一格内放入1。向左走1步,并下走2步放入2(称为马步),向左走1步,并下走2步放入3,依次类推放到n。在n的下方放入n+1(称为跳步),再按上述方法放置到2n,在2n的下边放入2n+1。如下图用Horse法生成的9阶幻方:
77 58 39 20 1 72 53 34 15
6 68 49 30 11 73 63 44 25
16 78 59 40 21 2 64 54 35
26 7 69 50 31 12 74 55 45
36 17 79 60 41 22 3 65 46
37 27 8 70 51 32 13 75 56
47 28 18 80 61 42 23 4 66
57 38 19 9 71 52 33 14 76
67 48 29 10 81 62 43 24 5
一般的,令矩阵[1,1]为向右走一步,向上走一步,[-1,0]为向左走一步。则马步可以表示为2X+Y,{X∈{[1,0],[-1,0]},Y∈{[0,1],[0,-1]}}∪{Y∈{[1,0],[-1,0]},X∈{[0,1],[0,-1]}}。对于2X+Y相应的跳步可以为2Y,-Y,X,-Y,X,3X,3X+3Y。上面的的是X型跳步。Horse法生成的幻方为魔鬼幻方。
Hire法生成偶阶幻方
将n阶幻方看作一个矩阵,记为A,其中的第i行j列的数字记为a(i,j)。在A内两对角线上填写1、2、3、……、n,各行再填写1、2、3、……、n,使各行各列数字之和为n*(n+1)/2。填写方法为:第1行从n到1填写,从第2行到第n/2行按从1到进行填写(第2行第1列填n,第2行第n列填1),从第n/2+1到第n行按n到1进行填写, 对角线的方格内数字不变。如下所示为6阶填写方法:
1 5 4 3 2 6
6 2 3 4 5 1
1 2 3 4 5 6
6 5 3 4 2 1
6 2 4 3 5 1
1 5 4 3 2 6
如下所示为8阶填写方法( 转置以后):
1 8 1 1 8 8 8 1
7 2 2 2 7 7 2 7
6 3 3 3 6 3 6 6
5 4 4 4 4 5 5 5
4 5 5 5 5 4 4 4
3 6 6 6 3 6 3 3
2 7 7 7 2 2 7 2
8 1 8 8 1 1 1 8
将A上所有数字分别按如下算法计算,得到B,其中b(i,j)=n×(a(i,j)-1)。则AT+B为目标幻方
(AT为A的 转置矩阵)。如下图用Hire法生成的8阶幻方:
1 63 6 5 60 59 58 8
56 10 11 12 53 54 15 49
41 18 19 20 45 22 47 48
33 26 27 28 29 38 39 40
32 39 38 36 37 27 26 25
24 47 43 45 20 46 18 17
16 50 54 53 12 11 55 9
57 7 62 61 4 3 2 64
⑴.Strachey法生成单偶幻方
将n阶单偶幻方表示为4m+2阶幻方。将其等分为四分,成为如下图所示A、B、C、D四个2m+1阶奇数幻方。
A C
D B
A用1至2m+1填写成(2m+1)2阶幻方;B用(2m+1)2+1至2*(2m+1)2填写成2m+1阶幻方;C用2*(2m+1)2+1至3*(2m+1)2填写成2m+1阶幻方;D用3*(2m+1)2+1至4*(2m+1)2填写成2m+1阶幻方;在A中间一行取m个小格,其中1格为该行居中1小格,另外m-1个小格任意,其他行左侧边缘取m列,将其与D相应方格内交换;B与C接近右侧m-1列相互交换。如下图用Strachey法生成的6阶幻方:
35 1 6 26 19 24
3 32 7 21 23 25
31 9 2 22 27 20
8 28 33 17 10 15
30 5 34 12 14 16
4 36 29 13 18 11
⑵Spring法生成以偶幻方
将n阶双偶幻方表示为4m阶幻方。将n阶幻方看作一个矩阵,记为A,其中的第i行j列方格内的数字记为a(i,j)。
先令a(i,j)=(i-1)*n+j,即第一行从左到可分别填写1、2、3、……、n;即第二行从左到可分别填写n+1、n+2、n+3、……、2n;…………之后进行对角交换。对角交换有两种方法:
方法一;将左上区域i+j为偶数的与幻方内以中心点为对称点的右下角对角数字进行交换;将右上区域i+j为奇数的与幻方内以中心点为对称点的左下角对角数字进行交换。(保证不同时为奇或偶即可。)
方法二;将幻方等分成m*m个4阶幻方,将各4阶幻方中对角线上的方格内数字与n阶幻方内以中心点为对称点的对角数字进行交换。
如下图用Spring法生成的4阶幻方:
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
YinMagic构造偶阶幻方
先构造n-2幻方,之后将其中的数字全部加上2n-2,放于n阶幻方中间,再用该方法将边缘数字填写完毕。该方法适用于n>4的所有幻方,我于2002年12月31日构造的数学模型。YinMagic法可生成6阶以上的偶幻方。如下图用YinMagic法生成的6阶幻方:
10 1 34 33 5 28
29 23 22 11 18 8
30 12 17 24 21 7
2 26 19 14 15 35
31 13 16 25 20 6
9 36 3 4 32 27
魔鬼幻方
如将幻方看成是无限伸展的图形,则任何一个相邻的n*n方格内的数字都可以组成一个幻方。则称该幻方为魔鬼幻方。
用我研究的Horse法构造的幻方是魔鬼幻方。如下的幻方更是魔鬼幻方,因为对于任意四个在两行两列上的数字,他们的和都是34。此幻方可用YinMagic方法生成。
15 10 3 6
4 5 16 9
14 11 2 7
1 8 13 12
1居上行正中央,依次斜填右上方,上出框往下填,
右出框左边放,排重便在下格填,右上排重一个样。

8程序编写编辑

利用计算机编程序,可求解出任意阶幻方.(但数字位数受电脑限制,实际上只能是有限范围内的任意阶),如利用 Matlab进行计算n阶幻方,其命令为:A=magic(n).
对于某些平方幻方,高次幻方,利用计算机辅助计算,也可快速求得.
一次幻方,一次幻立方,一次多维幻方,甚至可用简单公式全部求得.
某些类型的平方幻方,甚至高次 高维幻方,也可用公式求得.
在幻方公式求解方法,中国处于世界领先水平.中国李文的高维高次幻方公式,是幻方理论中的精品.吴硕辛的高次幻方理论,也可用公式求解.

9错位补角编辑

1.对于所有的奇阶幻方,1-n*n从小到大填入n*n的方格中。以n=5时,1-25为例。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2.横错位,将方格横向错位,每行错位数为 n-行数,即第一行横向移动n-1位,第二行横向移动n-2位...直到形成一个左低右高的楼梯。
       
1
2
3
4
5
     
6
7
8
9
10
 
   
11
12
13
14
15
   
 
16
17
18
19
20
     
21
22
23
24
25
       
3.横补角,以中间行为基准,将突出的数字补回本行所缺的方格内,4,5补到1的前,10补到6前,16补到20后,21,22补到25后。从而重新得到一个n*n方格。
4
5
1
2
3
10
6
7
8
9
11
12
13
14
15
17
18
19
20
16
23
24
25
21
22
4.竖错位,将方格纵向错位,每列错位数为 n-列数,即第一列横向移动n-1位,第二列横向移动n-2位...直到形成一个左低右高的楼梯。
       
3
     
2
9
   
1
8
15
 
5
7
14
16
4
6
13
20
22
10
12
19
21
 
11
18
25
   
17
24
     
23
       
5.竖补角,以中间列为基准,将突出的数字补回本列所缺的方格内,17,23补到4上,24补到5上,2补到21下,3,9补到22下。从而重新得到一个n*n方格,及得到结果。
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
结语:错位补角可以先横后竖,也可以先竖后横。楼梯可以左低右高,也可以左高右低。只要保证横竖做出的楼梯方向相同,就能得到正确结果。一共可以求出4个答案。
词条图册 更多图册

1/1

参考资料

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值