C语言 魔数方阵

#include<stdio.h>
main()
{
  int a[16][16],i,j,k,p,m,n;
  p=1;
  while(p==1)
        {
                printf("Please input n(1<n<15 ,n is single) /n");
                scanf("%d",&n);
                if((n!=0)&&(n<=15)&&(n%2!=0))
                {
                        printf("rang is:%d/n",n);
                        p=0;
                }
        }

  for(i=1;i<=n;i++)         /*init the rang*/
        for(j=1;j<=n;j++)
                a [j]=0;
  j=n/2+1;
  a[1][j]=1;
  for(k=2;k<=n*n;k++)
  {
        i=i-1;
        j=j+1;
        if((i<1)&&(j>n))
        {
                i=i+2;
                j=j-1;
        }
        else
        {
                if(i<1)i=n;
                if(j>n)j=1;
        }
        if(a[j]==0)
                a[j]=k;
        else
        {
                i=i+2;
                j=j-1;
                a[j]=k;
        }
  }
  for(i=1;i<=n;i++)
  {
        for(j=1;j<=n;j++)
                printf("%5d",a[j]);
        printf("/n");
  }
  getch();
}
 
魔术方阵简单的说,就是将连续整数1,2,3....,n 的数字,依特别之顺序,排在方阵里.使每一行的数,每一列的数或对角线位置的数各自相加,所得的和皆均为相同.魔术方阵别称魔术方阵(亦称魔方阵)是一种已流传千年的数字排列,不管是中西方对这奇妙的阵列都有所研究.魔术方阵其实是由西方"MAGIC QUA RE"翻译过来的,当然,在东方也有不同的别称.在中国我们称之为"幻方",我国古代就有"纵横图"的称呼.而日本则称之为"方阵".魔术方阵历史根据[论说]和[星子]中的记载,传说大约在三千年前,夏禹治水时,在洛水里出现了一只大乌龟,龟背上刻有奇特的图案,人们将它取名为[洛书]. 这个方阵具有一个奇特的性质,那就是每一行,每一列以及对角线上的数字和都是15.祖先们认为"洛书"是一个吉祥的象征,所以有许多人都将它画在纸上携带,认为有保平安的效果.在别的东方地区也有幻方的记载,但多数也蒙上神秘的色彩.较早期的一个,是刻在印度一所庙宇石上,年代大约是十一世纪,是四阶幻方.古代印度人十分崇拜这种幻方,至今从古神殿的遗址,墓碑上常常还可以发现四阶幻方的遗迹.至今还有许多印度人把[洛书]的图案佩在胸前当作"护身符".据中国古代数学的书.[数术记遗]中记录了一个三行三列的纵横图.当时称为[九官]. 由於洛书共有九个数字,所以汉代的徐岳把它称为"九宫算"(或九宫) 汉代之後又有很大的扩展,成为纵横均为n行的纵横图.而公元十世纪宋朝时,有人将[九宫]和[易系辞]中的[洛出书]附会起来,合称为[洛书].西元1275年,中国数学家杨挥在"古摘奇算法"中更进一步模仿洛书,计算出了五五幻方,六六幻方....九九幻方及百子幻方(十阶幻方) 等. 在过去的200多年中,许多人就曾经为这个问题大伤脑筋,但是所得的成果并不多.Frenicle de Bessy(1693年)在一本著作中提出三阶魔方阵只有8个,四阶魔方阵有7040个,後来许多人也验证无误.但五阶魔方阵的总数则一直等到1973年才由 Richard Schroeppel 利用电子计算机花了 100小时左右的时间才求出来,除此之外,六阶以及六阶以上的正规幻方总数都尚未求出来.魔术方阵公式一个n阶幻方中,因为每行的数字相等= 数字和=各行数字和(魔数)×行数n (n +1) = m × n ---&gt; M = n(n +1) 因此我们可以利用这个公式来计算魔术方阵的魔术:三阶幻方的魔数为 15四阶幻方的魔数为 34五阶幻方的魔数为 65 魔术方阵制作歌诀三阶幻方(九宫数):[九子斜排,上下对异,左右相更,四维挺出, 戴九履一,左三右七,二四为肩,六八为足.] 四阶幻方(阴图):[易换术曰:以十六子,依次递作四行排列,先以外四子对换,一换十六,四换十三,以四内角对换,六换十一,七换十, 横直上下斜角,皆三十四数,对换止可施之於小.]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值