fbpx
维基百科

幻方

幻方,有时又称魔术方阵(其简称“魔方”现一般指立方体魔術方塊)或纵横图,由一组排放在正方形中的整数组成,其每行、每列以及每一条主对角线的和均相等。通常幻方由从的连续整数组成,其中为正方形的行或列的数目。因此阶幻方有列,并且所填充的数为从

洛書(九数图),朱熹《周易本義》

幻方可以使用阶方阵来表示,方阵的每行、每列以及两条对角线的和都等于常数,如果填充数为,那么有

幻方简史

《繫辭》云:「河出圖,洛出書,聖人則之。」在宋朝之前,洛書的記述只有文字。

九宮圖實物最早發現於西漢,1977年中國考古學家在安徽阜陽縣雙古堆西漢古墓中發現漢文帝七年(前173年)的太乙九宮占盤,乃是中國漢代幻方的實物。東漢《數術記遺》也有記載。

後來陳摶以降認為河圖洛書的洛書代表九宫图,為  个数,而 行、 列以及两对角线上各自的数之和均为15。

杨辉纵横图

 
杨辉纵横图

南宋数学家杨辉著《续古摘奇算法》把类似于九宫图图形命名为纵横图,书中列举3、4、5、6、7、8、9、10阶幻方。其中所述三阶幻方构造法:“九子斜排,上下对易,左右相更,四维挺出,戴九履一,左三右七,二四为肩,六八为足”,比法国数学家Claude Gaspar Bachet提出的方法早三百余年。

构造法

根据构造方法的不同,幻方可以分成三类:奇数阶幻方、 阶幻方和 阶幻方,其中 自然数 阶幻方不存在。幻方构造法主要有:连续摆数法、阶梯法(楼梯法)、奇偶数分开的菱形法、对称法、对角线法、比例放大法、斯特雷奇法、LUX法、拉伊尔法(基方、根方合成法)、镶边法、相乘法、幻方模式等。

奇数阶幻方构造法

Siamese方法(Kraitchik 1942年,pp. 148-149)是构造奇数阶幻方的一种方法,说明如下:

  •  放置在第一行的中间。
  • 顺序将 等数放在右上方格中。
  • 当右上方格出界的时候,则由另一边进入。
  • 当右上方格中已经填有数,则把数填入正下方的方格中。
  • 按照以上步骤直到填写完所有 个方格。

(由于幻方的对称性,也可以把右上改为右下、左上以及左下等方位)

以下图 阶幻方为例, 填写在 (第一行第三列)的位置上; 应当填写在其右上方格即 中,由于 超出顶边界,所以从最底行进入,即  填写在 的右上方格 中; 填写在 的右上方格 中,由于 超出右边界,所以从最左列进入,即  填写在 的右上方格 中; 应该填写的方格 已经被 所占据,因此填写在 的正下方格 中;按照上面的步骤直到所有数填入。

     
     

魔方阵不是唯一的,比如5阶魔方阵还可以是:

 
 

偶数阶幻方构造法

 阶幻方构造法

对于 阶幻方一般都用对调法,制作起来很容易。将它分割成  区块,再将其每一个区块的非主副对角线上的各个数关于中心对调即可。
如4阶幻方的排列法:
 
按如上图排列好,再将非主副对角线上的各个数关于中心对调,即成下图:
 
八阶幻方构造如下
 
即:
 

 阶幻方构造法

加边法

 阶为例子,先排出 阶的幻方,如上图,再将图中每一个数都加上 ,有下图:
 

在外围加上一圈格子,把  这些数安排在外圈格子内,但要使相对两数之和等于 。对于 这些数是:  
结果如下:
 

LUX法

在(4M+2)×(4M+2)個方格的適當格點上,先排出2M+1階的幻方。在前M+1行的格點,全部標上「L」;在第M+1行的中間格點標上「U」,其余格點標上「L」;在第M+2行的中间格點標上「L」,其余格點標上「U」;在餘下的M-1行的格點全部標上「X」。將格點上的數乘以4再減4,再按下面的規則加上1至4其中一個數,填入對應的格上:

 4 1 1 4 1 4 L U X 2 3 2 3 3 2 

例子:

[ 68 65 96 93 4 1 32 29 60 57 ] 17L 24L 1L 8L 15L [ 66 67 94 95 2 3 30 31 58 59 ] [ 92 89 20 17 28 25 56 53 64 61 ] 23L 5L 7L 14L 16L [ 90 91 18 19 26 27 54 55 62 63 ] [ 16 13 24 21 49 52 80 77 88 85 ] 4L 6L 13U 20L 22L [ 14 15 22 23 50 51 78 79 86 87 ] [ 37 40 45 48 76 73 81 84 9 12 ] 10U 12U 19L 21U 3U [ 38 39 46 47 74 75 82 83 10 11 ] [ 41 44 69 72 97 100 5 8 33 36 ] 11X 18X 25X 2X 9X [ 43 42 71 70 99 98 7 6 35 34 ] 

編程語言參考實現

四階幻方全解搜索(C/C++)[1][需要較佳来源]

#include<stdio.h> int a[17],b[17],m; void s(int i) { /*搜索全部四階幻方,C代碼,運行時間7秒*/  int n=0,j=0;  while(++j<17)  if(!a[j])  {  a[b[i]=j]=1;  switch(i)  {  case 1:case 2:case 3:case 5:case 6:case 7:case 9:case 10:s(i+1);break;  case 11:if(b[6]+b[7]+b[10]+b[11]==34)s(12);break;  case 4:case 8:case 12:if(b[i-3]+b[i-2]+b[i-1]+b[i]==34)s(i+1);break;  case 13:if(b[1]+b[5]+b[9]+b[13]==34&&b[4]+b[7]+b[10]+b[13]==34)s(14);break;  case 14:case 15:if(b[i-12]+b[i-8]+b[i-4]+b[i]==34)s(i+1);break;  case 16:for(printf("\n"),++m;++n<17;n%4?0:printf("\n"))printf("%2d ",b[n]);  }  a[j]=0;  } } int main(void) {  s(1);  printf("四階幻方總數量:%d(含旋轉反射相同)",m);  return 0; } 

奇數階幻方算法的Java語言實現

/** * @author: contribute to wikipedia according GNU * @description:用於創建奇數階的幻方 */ public class magic_squre_odd {  static int[][] matrix;  static int n;  public static void magic_squre_odd_generate()  { matrix = new int[n][n];  //所有的數初始化為0  matrix[0][(n-1)/2] = 1;  int x = 0,y = (n-1)/2;  //count:記住已經插入過的數  for(int count = 2; count<=n*n;count++)  while(true)  {  //先x-1 y+1  x--;  y++;  //判斷是否可以插入  while(true)  {//循環判斷是否越界,直到一個地方不越界為止  //判斷是否越界:  //越上界x<0,則移到最下方x=x+n,y不變; continue  if(x<0)  {  x += n;  continue;  }  //越右界y>=n,則y=y-n,x不變;continue  if(y>=n)  {  y -= n;  continue;  }  //循環判斷是否該位置已經有數據,直到找到一個空位  //如果有數據,則移到x = x + 2;y = y - 1; continue  if (y<0){y+=n;continue;}  if(matrix[x][y] != 0 )  {  x += 2;y -= 1;  if (x>=n){x-=n;continue;}  if (y<0){y+=n;continue;}  continue;  }  break;  }  //將當前的count值賦給選出的空位  matrix[x][y]= count;  break;  }  }  public static void print()  {  for(int i = 0; i < n; i++)  {  for(int j = 0; j < n; j++)  {  //System.out.println(matrix[i][j]);  System.out.print(matrix[i][j]);  System.out.print("_");  }  System.out.println();  }  }  public static void main(String[] args)  { //手工輸入n的值,並確保為奇數  n = 11;  magic_squre_odd_generate();  print();  } } 
以下是本算法將n設置為11時得出的11階幻方的構造結果: 
68 81 94 107 120 1 14 27 40 53 66 80 93 106 119 11 13 26 39 52 65 67 92 105 118 10 12 25 38 51 64 77 79 104 117 9 22 24 37 50 63 76 78 91 116 8 21 23 36 49 62 75 88 90 103 7 20 33 35 48 61 74 87 89 102 115 19 32 34 47 60 73 86 99 101 114 6 31 44 46 59 72 85 98 100 113 5 18 43 45 58 71 84 97 110 112 4 17 30 55 57 70 83 96 109 111 3 16 29 42 56 69 82 95 108 121 2 15 28 41 54 

 階幻方算法的Java語言實現

 /**  * @author: contribute to wikipedia according GNU  * @description:用於創建4階的幻方  *  */  public class magic_square_4m {  /**  * @param args  */  static int matrix[][];  static int n;  static void magic_squre_4m_generate()  {  //初始化matrix  matrix = new int[n][n];  //將matrix裡的位置用數順序排列  int ini = 0;  for(int i = 0; i < n; i++)  for(int j = 0; j < n; j++)  matrix[i][j] = ++ini;    //輸出對調前的樣子  System.out.println("對調之前的樣子:");  print();    //然後對調(僅對右上方的數進行遍歷)  for(int i = 0; i < n; i++)  for(int j = i + 1; j < n; j++)  {  if(( i != j) && (i + j) != (n -1) )  { //對不在主付對角線上的數關於中心對調  int temp;  temp = matrix[i][j];  matrix[i][j] = matrix[n -1 - i][n - 1 - j];  matrix[n -1 - i][n - 1 - j] = temp;  }  }  }    public static void print()  {  for(int i = 0; i < n; i++)  {  for(int j = 0; j < n; j++)  {  System.out.print(matrix[i][j]);  System.out.print("_");  }  System.out.print("\n");  }  }    public static void main(String[] args) {  //這裡手動設置n的數值為4,這裡只能設置為4,因為只求4階幻方   n = 4;  magic_squre_4m_generate();  System.out.println("對調之後的樣子:");  print();  }  } 
以下是本算法輸出的結果: 
對調之前的樣子: 1_2_3_4_ 5_6_7_8_ 9_10_11_12_ 13_14_15_16_ 對調之後的樣子: 1_15_14_4_ 12_6_7_9_ 8_10_11_5_ 13_3_2_16_ 

研究价值

知名华人数学家陈省身曾在数学演讲中说幻方只是一个奇迹,它在数学中没有引起更普遍深刻的影响,不属于“好的数学”。[2]

对幻方的学习和研究一直局限于趣味数学本身,更接近数字游戏或文字游戏,缺乏与主流数学的联系(和璇玑图在中国诗歌中的地位有一些相似)。数学和物理中也有具有更多学术价值的特殊数字方阵,如推动了试验设计研究的拉丁方陣和已有应用的阿达玛矩阵,还有在量子力学中有重要价值的泡利矩阵及其推广版本盖尔曼矩阵魔术方块则可以与群论建立联系(见魔方群),可以作为抽象代数的入门教具,也是计算群论的研究案例之一,并非单纯的几何玩具。高性能的计算机诞生后,幻方、幻星、素数环(prime ring problem)等很多这类需要满足特殊规律的填数问题,只要所需的数字规模不大,都可以考虑通过深度优先搜索算法暴力求解和枚举。

艺术与流行文化

  • 德国画家与雕刻家阿尔布雷希特·丢勒曾在一幅名作《忧郁》(Melencolia I)的角落中画下一个幻方。这个著名的幻方图也被知名工程数学软件MATLAB加入自己的帮助文档中。[來源請求]

参见

參考資料

引用

  1. ^ "所有四阶幻方". [2017-01-11]. (原始内容于2017-01-13) (中文(中国大陆)). 
  2. ^ 黄且圆. 陈省身:如何做“好的数学”. 2015年3月2日 [2019年9月29日]. (原始内容于2019年9月29日) (中文(中国大陆)). 可惜幻方只是一个奇迹,它在数学中没有引起其他更普遍深刻的影响。相反地,另外一个奇迹,所有的圆、圆的周长和它的直径之比都是一个不变的数,数学上称之为圆周率,记作。这个结果可重要了,因为这个数渗透了整个数学!...幻方只是一个偶然现象,虽很巧妙,但不属于好的数学。  |journal=被忽略 (帮助)

延伸阅读

  • 高治源. 九宫图探秘. 香港天马图书有限公司. 2004 (中文(香港)). 
  • 张道鑫. 素数幻方. 香港天马图书有限公司. 2003 (中文(香港)). 
  • 李杭强. 趣味数学幻方. 香港天马图书有限公司. 2002 (中文(香港)). 
  • 林正禄. 开拓智力的奇方——幻方. 香港天马图书有限公司. 2001 (中文(香港)). 

外部链接

幻方, 此條目需要补充更多来源, 2019年9月29日, 请协助補充多方面可靠来源以改善这篇条目, 无法查证的内容可能會因為异议提出而被移除, 致使用者, 请搜索一下条目的标题, 来源搜索, 网页, 新闻, 书籍, 学术, 图像, 以检查网络上是否存在该主题的更多可靠来源, 判定指引, 有时又称魔术方阵, 其简称, 魔方, 现一般指立方体的魔術方塊, 或纵横图, 由一组排放在正方形中的整数组成, 其每行, 每列以及每一条主对角线的和均相等, 通常由从1, displaystyle, 到n, displaystyle. 此條目需要补充更多来源 2019年9月29日 请协助補充多方面可靠来源以改善这篇条目 无法查证的内容可能會因為异议提出而被移除 致使用者 请搜索一下条目的标题 来源搜索 幻方 网页 新闻 书籍 学术 图像 以检查网络上是否存在该主题的更多可靠来源 判定指引 幻方 有时又称魔术方阵 其简称 魔方 现一般指立方体的魔術方塊 或纵横图 由一组排放在正方形中的整数组成 其每行 每列以及每一条主对角线的和均相等 通常幻方由从1 displaystyle 1 到N 2 displaystyle N 2 的连续整数组成 其中N displaystyle N 为正方形的行或列的数目 因此N displaystyle N 阶幻方有N displaystyle N 行N displaystyle N 列 并且所填充的数为从1 displaystyle 1 到N 2 displaystyle N 2 洛書 九数图 朱熹 周易本義 幻方可以使用N displaystyle N 阶方阵来表示 方阵的每行 每列以及两条对角线的和都等于常数M 2 N displaystyle M 2 N 如果填充数为1 2 N 2 displaystyle 1 2 dots N 2 那么有 M 2 N N N 2 1 2 displaystyle M 2 N frac N N 2 1 2 目录 1 幻方简史 2 杨辉纵横图 3 构造法 3 1 奇数阶幻方构造法 3 2 偶数阶幻方构造法 3 2 1 UNIQ postMath 00000037 QINU 阶幻方构造法 3 2 2 UNIQ postMath 0000003F QINU 阶幻方构造法 3 2 2 1 加边法 3 2 2 2 LUX法 3 3 編程語言參考實現 3 4 四階幻方全解搜索 C C 1 需要較佳来源 3 4 1 奇數階幻方算法的Java語言實現 3 4 2 UNIQ postMath 0000004B QINU 階幻方算法的Java語言實現 4 研究价值 5 艺术与流行文化 6 参见 7 參考資料 7 1 引用 7 2 延伸阅读 8 外部链接幻方简史 编辑 繫辭 云 河出圖 洛出書 聖人則之 在宋朝之前 洛書的記述只有文字 九宮圖實物最早發現於西漢 1977年中國考古學家在安徽阜陽縣雙古堆西漢古墓中發現漢文帝七年 前173年 的太乙九宮占盤 乃是中國漢代幻方的實物 東漢 數術記遺 也有記載 後來陳摶以降認為河圖洛書的洛書代表九宫图 為1 9 displaystyle 1 dots 9 这9 displaystyle 9 个数 而3 displaystyle 3 行 3 displaystyle 3 列以及两对角线上各自的数之和均为15 杨辉纵横图 编辑 杨辉纵横图 南宋数学家杨辉著 续古摘奇算法 把类似于九宫图的图形命名为纵横图 书中列举3 4 5 6 7 8 9 10阶幻方 其中所述三阶幻方构造法 九子斜排 上下对易 左右相更 四维挺出 戴九履一 左三右七 二四为肩 六八为足 比法国数学家Claude Gaspar Bachet提出的方法早三百余年 构造法 编辑根据构造方法的不同 幻方可以分成三类 奇数阶幻方 4 M displaystyle 4M 阶幻方和4 M 2 displaystyle 4M 2 阶幻方 其中M displaystyle M 为自然数 2 displaystyle 2 阶幻方不存在 幻方构造法主要有 连续摆数法 阶梯法 楼梯法 奇偶数分开的菱形法 对称法 对角线法 比例放大法 斯特雷奇法 LUX法 拉伊尔法 基方 根方合成法 镶边法 相乘法 幻方模式等 奇数阶幻方构造法 编辑 Siamese方法 Kraitchik 1942年 pp 148 149 是构造奇数阶幻方的一种方法 说明如下 把1 displaystyle 1 放置在第一行的中间 顺序将2 3 displaystyle 2 3 dots 等数放在右上方格中 当右上方格出界的时候 则由另一边进入 当右上方格中已经填有数 则把数填入正下方的方格中 按照以上步骤直到填写完所有N 2 displaystyle N 2 个方格 由于幻方的对称性 也可以把右上改为右下 左上以及左下等方位 以下图5 displaystyle 5 阶幻方为例 1 displaystyle 1 填写在 1 3 displaystyle 1 3 第一行第三列 的位置上 2 displaystyle 2 应当填写在其右上方格即 0 4 displaystyle 0 4 中 由于 0 4 displaystyle 0 4 超出顶边界 所以从最底行进入 即 5 4 displaystyle 5 4 3 displaystyle 3 填写在 5 4 displaystyle 5 4 的右上方格 4 5 displaystyle 4 5 中 4 displaystyle 4 填写在 4 5 displaystyle 4 5 的右上方格 3 6 displaystyle 3 6 中 由于 3 6 displaystyle 3 6 超出右边界 所以从最左列进入 即 3 1 displaystyle 3 1 5 displaystyle 5 填写在 3 1 displaystyle 3 1 的右上方格 2 2 displaystyle 2 2 中 6 displaystyle 6 应该填写的方格 1 3 displaystyle 1 3 已经被1 displaystyle 1 所占据 因此填写在 2 2 displaystyle 2 2 的正下方格 3 2 displaystyle 3 2 中 按照上面的步骤直到所有数填入 8 1 6 3 5 7 4 9 2 displaystyle begin bmatrix 8 amp 1 amp 6 3 amp 5 amp 7 4 amp 9 amp 2 end bmatrix 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 displaystyle begin bmatrix 17 amp 24 amp 1 amp 8 amp 15 23 amp 5 amp 7 amp 14 amp 16 4 amp 6 amp 13 amp 20 amp 22 10 amp 12 amp 19 amp 21 amp 3 11 amp 18 amp 25 amp 2 amp 9 end bmatrix 47 58 69 80 1 12 23 34 45 57 68 79 9 11 22 33 44 46 67 78 8 10 21 32 43 54 56 77 7 18 20 31 42 53 55 66 6 17 19 30 41 52 63 65 76 16 27 29 40 51 62 64 75 5 26 28 39 50 61 72 74 4 15 36 38 49 60 71 73 3 14 25 37 48 59 70 81 2 13 24 35 displaystyle begin bmatrix 47 amp 58 amp 69 amp 80 amp 1 amp 12 amp 23 amp 34 amp 45 57 amp 68 amp 79 amp 9 amp 11 amp 22 amp 33 amp 44 amp 46 67 amp 78 amp 8 amp 10 amp 21 amp 32 amp 43 amp 54 amp 56 77 amp 7 amp 18 amp 20 amp 31 amp 42 amp 53 amp 55 amp 66 6 amp 17 amp 19 amp 30 amp 41 amp 52 amp 63 amp 65 amp 76 16 amp 27 amp 29 amp 40 amp 51 amp 62 amp 64 amp 75 amp 5 26 amp 28 amp 39 amp 50 amp 61 amp 72 amp 74 amp 4 amp 15 36 amp 38 amp 49 amp 60 amp 71 amp 73 amp 3 amp 14 amp 25 37 amp 48 amp 59 amp 70 amp 81 amp 2 amp 13 amp 24 amp 35 end bmatrix 3 displaystyle 3 阶 5 displaystyle 5 阶 9 displaystyle 9 阶 魔方阵不是唯一的 比如5阶魔方阵还可以是 15 6 19 2 23 16 12 25 8 4 9 5 13 21 17 22 18 1 14 10 3 24 7 20 11 displaystyle begin bmatrix 15 amp 6 amp 19 amp 2 amp 23 16 amp 12 amp 25 amp 8 amp 4 9 amp 5 amp 13 amp 21 amp 17 22 amp 18 amp 1 amp 14 amp 10 3 amp 24 amp 7 amp 20 amp 11 end bmatrix 5 displaystyle 5 阶 偶数阶幻方构造法 编辑 4 M displaystyle 4M 阶幻方构造法 编辑 对于4 M displaystyle 4M 阶幻方一般都用对调法 制作起来很容易 将它分割成M 2 displaystyle M 2 个4 4 displaystyle 4 times 4 区块 再将其每一个区块的非主副对角线上的各个数关于中心对调即可 如4阶幻方的排列法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 displaystyle begin bmatrix 1 amp 2 amp 3 amp 4 5 amp 6 amp 7 amp 8 9 amp 10 amp 11 amp 12 13 amp 14 amp 15 amp 16 end bmatrix 按如上图排列好 再将非主副对角线上的各个数关于中心对调 即成下图 1 15 14 4 12 6 7 9 8 10 11 5 13 3 2 16 displaystyle begin bmatrix 1 amp 15 amp 14 amp 4 12 amp 6 amp 7 amp 9 8 amp 10 amp 11 amp 5 13 amp 3 amp 2 amp 16 end bmatrix 八阶幻方构造如下 displaystyle left begin array cccc cccc diagdown amp bigstar amp bigstar amp diagup amp diagdown amp bigstar amp bigstar amp diagup bigstar amp diagdown amp diagup amp bigstar amp bigstar amp diagdown amp diagup amp bigstar bigstar amp diagup amp diagdown amp bigstar amp bigstar amp diagup amp diagdown amp bigstar diagup amp bigstar amp bigstar amp diagdown amp diagup amp bigstar amp bigstar amp diagdown hline diagdown amp bigstar amp bigstar amp diagup amp diagdown amp bigstar amp bigstar amp diagup bigstar amp diagdown amp diagup amp bigstar amp bigstar amp diagdown amp diagup amp bigstar bigstar amp diagup amp diagdown amp bigstar amp bigstar amp diagup amp diagdown amp bigstar diagup amp bigstar amp bigstar amp diagdown amp diagup amp bigstar amp bigstar amp diagdown end array right 即 1 63 62 4 5 59 58 8 56 10 11 53 52 14 15 49 48 18 19 45 44 22 23 41 25 39 38 28 29 35 34 32 33 31 30 36 37 27 26 40 24 42 43 21 20 46 47 17 16 50 51 13 12 54 55 9 57 7 6 60 61 3 2 64 displaystyle begin bmatrix 1 amp 63 amp 62 amp 4 amp 5 amp 59 amp 58 amp 8 56 amp 10 amp 11 amp 53 amp 52 amp 14 amp 15 amp 49 48 amp 18 amp 19 amp 45 amp 44 amp 22 amp 23 amp 41 25 amp 39 amp 38 amp 28 amp 29 amp 35 amp 34 amp 32 33 amp 31 amp 30 amp 36 amp 37 amp 27 amp 26 amp 40 24 amp 42 amp 43 amp 21 amp 20 amp 46 amp 47 amp 17 16 amp 50 amp 51 amp 13 amp 12 amp 54 amp 55 amp 9 57 amp 7 amp 6 amp 60 amp 61 amp 3 amp 2 amp 64 end bmatrix 4 M 2 displaystyle 4M 2 阶幻方构造法 编辑 加边法 编辑 以6 displaystyle 6 阶为例子 先排出4 displaystyle 4 阶的幻方 如上图 再将图中每一个数都加上8 m 2 10 displaystyle 8m 2 10 有下图 11 25 24 14 22 16 17 19 18 20 21 15 23 13 12 26 displaystyle begin bmatrix 11 amp 25 amp 24 amp 14 22 amp 16 amp 17 amp 19 18 amp 20 amp 21 amp 15 23 amp 13 amp 12 amp 26 end bmatrix 在外围加上一圈格子 把1 2 3 8 m 2 displaystyle 1 2 3 dots 8m 2 和16 m 2 8 m 3 16 m 2 8 m 4 4 m 2 2 displaystyle 16m 2 8m 3 16m 2 8m 4 dots 4m 2 2 这些数安排在外圈格子内 但要使相对两数之和等于16 m m 1 5 displaystyle 16m m 1 5 对于m 1 displaystyle m 1 这些数是 1 2 3 4 5 6 7 8 9 10 displaystyle 1 2 3 4 5 6 7 8 9 10 27 28 29 30 31 32 33 34 35 36 displaystyle 27 28 29 30 31 32 33 34 35 36 结果如下 1 9 34 33 32 2 6 11 25 24 14 31 10 22 16 17 19 27 30 18 20 21 15 7 29 23 13 12 26 8 35 28 3 4 5 36 displaystyle begin bmatrix 1 amp 9 amp 34 amp 33 amp 32 amp 2 6 amp 11 amp 25 amp 24 amp 14 amp 31 10 amp 22 amp 16 amp 17 amp 19 amp 27 30 amp 18 amp 20 amp 21 amp 15 amp 7 29 amp 23 amp 13 amp 12 amp 26 amp 8 35 amp 28 amp 3 amp 4 amp 5 amp 36 end bmatrix LUX法 编辑 在 4M 2 4M 2 個方格的適當格點上 先排出2M 1階的幻方 在前M 1行的格點 全部標上 L 在第M 1行的中間格點標上 U 其余格點標上 L 在第M 2行的中间格點標上 L 其余格點標上 U 在餘下的M 1行的格點全部標上 X 將格點上的數乘以4再減4 再按下面的規則加上1至4其中一個數 填入對應的格上 4 1 1 4 1 4 L U X 2 3 2 3 3 2 例子 68 65 96 93 4 1 32 29 60 57 17L 24L 1L 8L 15L 66 67 94 95 2 3 30 31 58 59 92 89 20 17 28 25 56 53 64 61 23L 5L 7L 14L 16L 90 91 18 19 26 27 54 55 62 63 16 13 24 21 49 52 80 77 88 85 4L 6L 13U 20L 22L 14 15 22 23 50 51 78 79 86 87 37 40 45 48 76 73 81 84 9 12 10U 12U 19L 21U 3U 38 39 46 47 74 75 82 83 10 11 41 44 69 72 97 100 5 8 33 36 11X 18X 25X 2X 9X 43 42 71 70 99 98 7 6 35 34 編程語言參考實現 编辑 四階幻方全解搜索 C C 1 需要較佳来源 编辑 include lt stdio h gt int a 17 b 17 m void s int i 搜索全部四階幻方 C代碼 運行時間7秒 int n 0 j 0 while j lt 17 if a j a b i j 1 switch i case 1 case 2 case 3 case 5 case 6 case 7 case 9 case 10 s i 1 break case 11 if b 6 b 7 b 10 b 11 34 s 12 break case 4 case 8 case 12 if b i 3 b i 2 b i 1 b i 34 s i 1 break case 13 if b 1 b 5 b 9 b 13 34 amp amp b 4 b 7 b 10 b 13 34 s 14 break case 14 case 15 if b i 12 b i 8 b i 4 b i 34 s i 1 break case 16 for printf n m n lt 17 n 4 0 printf n printf 2d b n a j 0 int main void s 1 printf 四階幻方總數量 d 含旋轉反射相同 m return 0 奇數階幻方算法的Java語言實現 编辑 author contribute to wikipedia according GNU description 用於創建奇數階的幻方 public class magic squre odd static int matrix static int n public static void magic squre odd generate matrix new int n n 所有的數初始化為0 matrix 0 n 1 2 1 int x 0 y n 1 2 count 記住已經插入過的數 for int count 2 count lt n n count while true 先x 1 y 1 x y 判斷是否可以插入 while true 循環判斷是否越界 直到一個地方不越界為止 判斷是否越界 越上界x lt 0 則移到最下方x x n y不變 continue if x lt 0 x n continue 越右界y gt n 則y y n x不變 continue if y gt n y n continue 循環判斷是否該位置已經有數據 直到找到一個空位 如果有數據 則移到x x 2 y y 1 continue if y lt 0 y n continue if matrix x y 0 x 2 y 1 if x gt n x n continue if y lt 0 y n continue continue break 將當前的count值賦給選出的空位 matrix x y count break public static void print for int i 0 i lt n i for int j 0 j lt n j System out println matrix i j System out print matrix i j System out print System out println public static void main String args 手工輸入n的值 並確保為奇數 n 11 magic squre odd generate print 以下是本算法將n設置為11時得出的11階幻方的構造結果 68 81 94 107 120 1 14 27 40 53 66 80 93 106 119 11 13 26 39 52 65 67 92 105 118 10 12 25 38 51 64 77 79 104 117 9 22 24 37 50 63 76 78 91 116 8 21 23 36 49 62 75 88 90 103 7 20 33 35 48 61 74 87 89 102 115 19 32 34 47 60 73 86 99 101 114 6 31 44 46 59 72 85 98 100 113 5 18 43 45 58 71 84 97 110 112 4 17 30 55 57 70 83 96 109 111 3 16 29 42 56 69 82 95 108 121 2 15 28 41 54 4 displaystyle 4 階幻方算法的Java語言實現 编辑 author contribute to wikipedia according GNU description 用於創建4階的幻方 public class magic square 4m param args static int matrix static int n static void magic squre 4m generate 初始化matrix matrix new int n n 將matrix裡的位置用數順序排列 int ini 0 for int i 0 i lt n i for int j 0 j lt n j matrix i j ini 輸出對調前的樣子 System out println 對調之前的樣子 print 然後對調 僅對右上方的數進行遍歷 for int i 0 i lt n i for int j i 1 j lt n j if i j amp amp i j n 1 對不在主付對角線上的數關於中心對調 int temp temp matrix i j matrix i j matrix n 1 i n 1 j matrix n 1 i n 1 j temp public static void print for int i 0 i lt n i for int j 0 j lt n j System out print matrix i j System out print System out print n public static void main String args 這裡手動設置n的數值為4 這裡只能設置為4 因為只求4階幻方 n 4 magic squre 4m generate System out println 對調之後的樣子 print 以下是本算法輸出的結果 對調之前的樣子 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 對調之後的樣子 1 15 14 4 12 6 7 9 8 10 11 5 13 3 2 16 研究价值 编辑知名华人数学家陈省身曾在数学演讲中说幻方只是一个奇迹 它在数学中没有引起更普遍深刻的影响 不属于 好的数学 2 对幻方的学习和研究一直局限于趣味数学本身 更接近数字游戏或文字游戏 缺乏与主流数学的联系 和璇玑图在中国诗歌中的地位有一些相似 数学和物理中也有具有更多学术价值的特殊数字方阵 如推动了试验设计研究的拉丁方陣和已有应用的阿达玛矩阵 还有在量子力学中有重要价值的泡利矩阵及其推广版本盖尔曼矩阵 魔术方块则可以与群论建立联系 见魔方群 可以作为抽象代数的入门教具 也是计算群论的研究案例之一 并非单纯的几何玩具 高性能的计算机诞生后 幻方 幻星 素数环 prime ring problem 等很多这类需要满足特殊规律的填数问题 只要所需的数字规模不大 都可以考虑通过深度优先搜索算法暴力求解和枚举 艺术与流行文化 编辑德国画家与雕刻家阿尔布雷希特 丢勒曾在一幅名作 忧郁 Melencolia I 的角落中画下一个幻方 这个著名的幻方图也被知名工程数学软件MATLAB加入自己的帮助文档中 來源請求 参见 编辑九宫图 九宫算 洛书 幻圆 素数倒数幻方 數獨 未解决的数学问题 吠陀方形 Frenicle 标准型式 数字推盘游戏 泛對角幻方參考資料 编辑引用 编辑 所有四阶幻方 2017 01 11 原始内容存档于2017 01 13 中文 中国大陆 黄且圆 陈省身 如何做 好的数学 2015年3月2日 2019年9月29日 原始内容存档于2019年9月29日 中文 中国大陆 可惜幻方只是一个奇迹 它在数学中没有引起其他更普遍深刻的影响 相反地 另外一个奇迹 所有的圆 圆的周长和它的直径之比都是一个不变的数 数学上称之为圆周率 记作 这个结果可重要了 因为这个数渗透了整个数学 幻方只是一个偶然现象 虽很巧妙 但不属于好的数学 journal 被忽略 帮助 延伸阅读 编辑 高治源 九宫图探秘 香港天马图书有限公司 2004 中文 香港 张道鑫 素数幻方 香港天马图书有限公司 2003 中文 香港 李杭强 趣味数学幻方 香港天马图书有限公司 2002 中文 香港 林正禄 开拓智力的奇方 幻方 香港天马图书有限公司 2001 中文 香港 外部链接 编辑 中國數學史主题 幻方介绍及其建造方法 英语 一個小學老師對幻方的研究 取自 https zh wikipedia org w index php title 幻方 amp oldid 76742849, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。