C#,任意阶幻方(Magic Square)的算法与源代码

ops/2025/1/15 14:39:54/

1 什么是幻方

幻方(Magic Square)是一种将数字安排在正方形格子中,使每行、列和对角线上的数字和都相等的方法。
幻方也是一种中国传统游戏。旧时在官府、学堂多见。它是将从一到若干个数的自然数排成纵横各为若干个数的正方形,使在同一行、同一列和同一对角线上的几个数的和都相等。

2 幻方的历史纪录

在一个由若干个排列整齐的数组成的正方形中,正方形中任意一横行、一纵行及对角线的几个数之和都相等,具有这种性质的图表,称为“幻方”。中国古代称为“河图”、“洛书”,又叫“纵横图”。

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

2500年前,孔子在他研究《易经》的著作《系词上传》中记载了:“河出图,洛出书,圣人则之。”最早将数字与洛书相连的记载是2300年前的《庄子·天运》,它认为:“天有六极五常,帝王顺之则治,逆之则凶。九洛之事,治成德备,监照下土,天下戴之,此谓上皇。”明代数学家程大位在《算法统宗》中也曾发出“数何肇?其肇自图、书乎?伏羲得之以画卦,大禹得之以序畴,列圣得之以开物”的感叹,大意是说,数起源于远古时代黄河出现的河图与洛水出现的洛书,伏羲依靠河图画出八卦,大禹按照洛书划分九州,并制定治理天下的九类大法,圣人们根据它们演绎出各种治国安邦的良策,对人类社会与自然界的认识也得到步步深化。大禹从洛书中数的相互制约,均衡统一得到启发而制定国家的法律体系,使得天下一统,归于大治,这是借鉴思维的开端。这种活化思维的方式已成为科学灵感的来源之一。从洛书发端的幻方在数千年后更加生机盎然,被称为具有永恒魅力的数学问题。

十三世纪,中国南宋数学家杨辉在世界上首先开展了对幻方的系统研究,欧洲十四世纪也开始了这方面的工作。著名数学家费尔玛欧拉都进行过幻方研究。

中国不仅拥有幻方的发明权,而且是对幻方进行深入研究的国家。公元13世纪的数学家杨辉已经编制出3-10阶幻方,记载在他1275年写的《续古摘奇算法》一书中。在欧洲,直到1514年,德国著名画家丢勒才绘制出了完整的四阶幻方

而在国外,十二世纪的阿拉伯文献也有六阶幻方的记载,中国的考古学家们曾经在西安发现了阿拉伯文献上的五块六阶幻方,除了这些以外,历史上最早的四阶幻方是在印度发现的,那是一个完全幻方(后面会提到),而且比中国的杨辉还要早了两百多年,印度人认为那是天神的手笔.1956年西安出土一铁片板上所刻的六阶幻方(古阿拉伯数字)十三世纪,东罗马帝国才对幻方产生兴趣,但却没有什么成果.

直到十五世纪,住在君士坦丁堡的魔索普拉才把中国的纵横图传给了欧洲人,欧洲人认为幻方可以镇压妖魔,所以把它作为护身符,也把它叫作「Magic Square」.

任意阶幻方构造法,任意维幻方构造法,任意次幻方构造法,都早已找到。不存在最大阶幻方的世界纪录之类.对于各种媒体报导的幻方世界之最,很多是不实报导,不存在未解最大阶数幻方

3 源程序

using System;
using System.Text;
using System.Collections;
using System.Collections.Generic;namespace Legalsoft.Truffer.Algorithm
{public static partial class Algorithm_Gallery{public static int[,] Magic_Square(int n){int[,] magicSquare = new int[n, n];int i = n / 2;int j = n - 1;for (int num = 1; num <= n * n;){if (i == -1 && j == n){j = n - 2;i = 0;}else{if (j == n){j = 0;}if (i < 0){i = n - 1;}}if (j >= 0) {if (magicSquare[i, j] != 0){j -= 2;i++;continue;}else{magicSquare[i, j] = num++;}}j++;i--;}return magicSquare;}}
}

32幻方

 128幻方


http://www.ppmy.cn/ops/150312.html

相关文章

【机器学习】实战:天池工业蒸汽量项目(一)数据探索

文章目录 1、项目介绍2、导入数据探索工具包3、数据加载4、查看数据集变量信息5、查看数据统计信息6、查看数据字段信息7、箱式图数据探索8、查看数据分布9、特征相关性10、特征筛选 个人主页&#xff1a;道友老李 欢迎加入社区&#xff1a;道友老李的学习社区 【机器学习】实…

linux自动分区后devmappercentos-home删除后合并到其它分区上

删除其他分区&#xff0c;合并到对应分区上增加磁盘空间 删除开机默认挂载 /dev/mapper/centos-home vim /etc/fstab 把 /dev/mapper/centos-home 这一行删除掉命令行取消挂载 /dev/mapper/centos-home umount /dev/mapper/centos-home删除掉逻辑卷 home lvsdf -hlvremove /…

AI时代来了,我们不再需要IDE了

大家好&#xff0c;我是编程乐趣。 最近在思考一个问题&#xff0c;那就是AI这么强大。 未来有没有可能&#xff0c;我们就不需要不需要开发工具了&#xff0c;只需一个浏览器就可以开发软件了。 一、AI带来的变化 1、代码生成与补全 AI工具如GitHub Copilot等能够根据代码…

openEuler 22.04使用yum源最快速度部署k8s 1.20集群

本文目的 openEuler的官方源里有kubernetes 1.20&#xff0c;使用yum源安装是最快部署一个k8s集群的办法 硬件环境 主机名系统架构ipmasteropenEuler release 22.03 (LTS-SP2)arm192.168.3.11edgeopenEuler release 22.03 (LTS-SP2)arm192.168.3.12deviceopenEuler release 22.…

机器学习算法(一): 基于逻辑回归的分类预测

1 逻辑回归的介绍和应用 1.1 逻辑回归的介绍 逻辑回归&#xff08;Logistic regression&#xff0c;简称LR&#xff09;虽然其中带有"回归"两个字&#xff0c;但逻辑回归其实是一个分类模型&#xff0c;并且广泛应用于各个领域之中。虽然现在深度学习相对于这些传统…

UML系列之Rational Rose笔记八:类图

一、新建类图 首先依旧是新建要绘制的类图&#xff1b;选择class diagram&#xff1b; 修改命名&#xff1b; 二、工作台介绍 正常主要就是使用到class还有直接关联箭头就行&#xff1b; 如果不要求规范&#xff0c;直接新建一些需要的类&#xff0c;然后写好关系即可&#…

【HTML+CSS+JS+VUE】web前端教程-29-清除浮动

浮动副作用 当元素设置float浮动后,该元素就会脱离文档流并向左/向右浮动 浮动元素会造成父元素高度塌陷 后续元素会收到影响 清除浮动 当父元素出现塌陷的时候,对布局是不利的,所以我们必须清除副作用解决方案有很多种 父元素设置高度 受影响的元素增加clear属性 overflow…

鸿蒙报错Init keystore failed: keystore password was incorrect

报错如下&#xff1a; > hvigor ERROR: Failed :entry:defaultSignHap... > hvigor ERROR: Tools execution failed. 01-13 16:35:55 ERROR - hap-sign-tool: error: Init keystore failed: keystore password was incorrect * Try the following: > The key stor…