#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();
}
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 ---> M = n(n +1) 因此我们可以利用这个公式来计算魔术方阵的魔术:三阶幻方的魔数为 15四阶幻方的魔数为 34五阶幻方的魔数为 65 魔术方阵制作歌诀三阶幻方(九宫数):[九子斜排,上下对异,左右相更,四维挺出, 戴九履一,左三右七,二四为肩,六八为足.] 四阶幻方(阴图):[易换术曰:以十六子,依次递作四行排列,先以外四子对换,一换十六,四换十三,以四内角对换,六换十一,七换十, 横直上下斜角,皆三十四数,对换止可施之於小.]