奇数阶幻方

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

三阶幻方的解法

第一种:杨辉法:九子斜排,上下对易,左右相更,四维挺出。

1

2 4

3 5 7

6 8

9

2 9 4

7 5 3

6 1 8

第二种:九宫图也是幻方的别称,三阶幻方就是著名的洛书,他的排列是::“戴九履一,左三右七,二四为肩,六八为足,五居中央(9在上中,1在下中。7在左中,3在右中,2在左上,4在右上,6在左下,8在右下,正中央5)

第三种:罗伯法:最小的数据上行中央,依次向右上方斜填,上出框往下写,右出框往左填,排重便在下格填,右上排重一个样

8 1 6

3 5 7

4 9 2

四阶幻方的解法

1、先把这16个数字按顺序从小到到排成一个4乘4的方阵

2、内外四个角对角上互补的数相易,(方阵分为两个正方形,外大内小,然后把大正方形的四个对角上的数字对换,小正方形四个对角上的数字对换)即(1,16)(4,13)互换

(6,11)(7,10)互换

16 2 3 13

5 11 10 8

9 7 6 12

4 14 1

5 1

另:对于n=4k阶幻方,我们先把数字按顺序填写。写好后,按4*4把它划分成k*k个方阵。因为n是4的倍数,一定能用4*4的小方阵分割。然后把每个小方阵的对角线,象制作4阶幻方的方法一样,对角线上的数字换成互补的数字,就构成幻方。

五阶幻方的解法:罗伯法:最小的数据上行中央,依次向右上方斜填,上出框往下写,右出框往左填,排重便在下格填,右上排重一个样。

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,接着在1的右上方填2,由于1在最上一行,

所以1的右上方应该是第五行的第四个,

接下来在2的右上方填3,3的右上方应该是第三行第一个,所以在此填4,在4的右

上方填5,

在5的下方填6,接着按前面五个数的填法依次填7,8,9,10;

在10的下方填11,然后按上面的方法填,

每次填五个数,直到完成.

无论从上到下还是从左到右都是五排,

所以每排的五个数之和为(1+2+3+4+…+25)÷5=65,

因此,你可以验算一下是否每个和都是65.

此法适合于一切奇阶幻方.)

罗伯法

用罗伯法构造幻方:

幻方是一种广为流传的数学游戏,据说早在大禹治水时就发现过。幻方的特点是:由自然数构成n×n正方形阵列,称为n阶幻方,每一行、每一列、两对角线上的数之和相等。当n为奇数时,我们称幻方为奇阶幻方。法国人罗伯总结出了构造奇数阶连续自然数幻方的简单易行的方法“罗伯法”。下图就是一个用罗伯法排好的5阶幻方。

罗伯法的助记口诀:

(初学者可先画出一个N×N的方格阵)

1 居上行正中央——数字1 放在首行最中间的格子中

依次斜填切莫忘——向右上角斜行,依次填入数字

上出框界往下写——如果右上方向出了上边界,就以出框后的虚拟方格位置为基准,将数字竖直降落至底行对应的格子中右出框时左边放——同上,向右出了边界,就以出框后的虚拟方格位置为基准,将数字平移至最左列对应的格子中

重复便在下格填——如果数字{N} 右上的格子已被其它数字占领,就将{N+1} 填写在{N}下面的格子中

右上重复一个样——如果朝右上角出界,和“重复”的情况做同样处理

罗伯法的具体方法如下:

把1(或最小的数)放在第一行正中;

按以下规律排列剩下的n2-1个数:

1)每一个数放在前一个数的右上一格;

2)如果这个数所要放的格已经超出了顶行那么就把它放在底行,仍然要放在右一列;

3)如果这个数所要放的格已经超出了最右列那么就把它放在最左列,仍然要放在上一行;

4)如果这个数(例如6)所要放的格已经超出了顶行且超出了最右列那么就把它放在前一个数(例如5)的下一行同一列的格内;

5)如果这个数所要放的格已经有数填入,处理方法同4)。

只要是有规律的东西,计算机很容易就可以做到。

下面我们把罗伯法翻译成计算机算法思路:

定义一个n×n数组;

把1放在第0行第n\2列;

设当前格为(i?j),设一步长变量k(k=2->n?n)

1) i减1,j加1;

2) 如果i<0那么i=n-1;

3) 如果j>n-1那么j=0;

4) 如果2)和3)同时出现那么就把j减回1,i加上2;

5) 如果a(i?j)不为空那么按照4)处理;

6) 把k的值赋给当前格a(i?j);

相关文档
最新文档