奥数 阶幻方简介

发布时间:2024年01月05日

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

? ? ? ? 幻方也是一种中国传统游戏,宋代数学家杨辉称之为纵横图。它是将从一到若干个数的自然数排成纵横各为若干个数的正方形,使在同一行、同一列和同一对角线上的几个数的和都相等。

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

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

高次幻方
? ? ? ? n阶幻方是由前n^2(n的2次方)个自然数组成的一个n阶方阵,其各行、各列及两条对角线所含的n个数的和相等。例子:(三阶幻方,幻和为15,如下)

492
357
816

? ? ? ? 高次幻方是指,当组成幻方各数替换为其2,3,...,k次幂时,仍满足幻方条件者,称此幻方为k次幻方。

反幻方
? ? ? ? 反幻方的定义:在一个由若干个排列整齐的数组成的正方形中,其中任意一横行、一纵行及对角线的几个数之和不相等,具有这种性质的图表,称为“反幻方”。

解法
? ? ? ? 南宋数学家杨辉,在他著的《续古摘奇算法》里介绍了这种方法:只要将九个自然数按照从小到大的递增次序斜排,然后把上、下两数对调,左、右两数也对调;最后再把中部四数各向外面挺出,幻方就出现了

在填幻方前我们做如下约定:如填定数字超出幻方格范围,则把幻方看成是可以无限伸展的图形:

最简单的幻方就是平面幻方,还有立体幻方、高次幻方等。

对平面幻方的构造,分为三种情况: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)交换,所有其它位置上的数不变。

Java实现
public class MagicSquare {
? ? ? ? public static void main(String[] args) {

? ? ? ? ? ? ? ? int n = 3;

? ? ? ? ? ? ? ? int[][] magicSquare = new int[n][n];

? ? ? ? ? ? ? ? int row = 0;

? ? ? ? ? ? ? ? int col = n / 2;

? ? ? ? ? ? ? ? // 填充幻方

? ? ? ? ? ? ? ? for (int i = 1; i

? ? ? ? ? ? ? ? ? ? ? ? magicSquare[row][col] = i;

? ? ? ? ? ? ? ? ? ? ? ? int nextRow = (row - 1 + n) % n;

? ? ? ? ? ? ? ? ? ? ? ? int nextCol = (col + 1) % n;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if (magicSquare[nextRow][nextCol] != 0) {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? row = (row + 1) % n;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? } else {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? row = nextRow;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? col = nextCol;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // 打印幻方

? ? ? ? ? ? ? ? ? ? ? ? for (int i = 0; i < n; i++) {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? for (int j = 0; j < n; j++) {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? System.out.print(magicSquare[i][j] + "\t");

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? System.out.println();

? ? ? ? ? ? ? ? }

? ? ? ? }

}

最后:幻方还可以紧密联系到八卦图也就是奇门遁甲的后天八卦
?

文章来源:https://blog.csdn.net/Hua19859210361/article/details/135392947
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。