幻方及编程幻方及编程.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
幻方及编程幻方及编程

奇数阶幻方的方法: 首先把1放在最上一行的正中间的方格,然后把下一个整数放置在右上方,如果到达最上一行,下一个整数放在最后一行,就好像它在第一行的上面,如果到达最有端,则下一个整数放在最左端,就好像好像他的最右端一样。当到达方格中填上数时,下一个整数就放在刚填数的下面,照着三阶幻方,从1到9走一下,就可以明白它的构造方法。 8 1 6 3 5 7 4 9 2 偶阶幻方分为单偶阶和双偶阶: 1双偶阶幻方(对称交换)n为偶数,且能被4整除(n=4,8,12….)先说明一个定义,互补:如果两个数字和,等于幻方的最大数和最和最小数的和,即n*n+1,称互补。先看看四阶幻方的添法:将数字从左到右;从上到下按顺序填写: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 这个方正的对角线,已用颜色标出。将对角线上的数字,换成与它互补的(同色)的数字。这里,n*n+1=4*4+1=17;把1换成17-1=16;把6换成17-6=11;把11换成17-11=6……..换成后就是四阶幻方。 对于n=4m阶的幻方,我们先把把数字按顺序填写。写好后,按4*4把它划分成m*m各方阵。因为n是4的倍数,一定能用4*4的方阵分割。然后把每个小方阵的对角线,像制作成四阶幻方地方法一样,对角线上的数字换成互补数字,就构成幻方。 64 2 3 61 60 6 7 57 9 55 54 12 13 51 50 16 17 47 46 20 21 43 42 24 40 26 27 37 36 30 31 33 32 34 35 29 28 38 39 25 41 23 22 44 45 19 18 48 49 15 14 52 53 11 10 56 8 58 59 5 4 62 63 1 2单偶阶幻方(不能被四整除的是单偶阶幻方)如6阶、10阶、14阶…将n阶单偶阶幻方表示为4m+2,将其等分成四分,成为如下图所示A、B、C、D四个2m+1的奇阶幻方。 A C D B A用1到(2m+1)^2填写成2m+1阶幻方,B用(2m+1)^2+1到2*(2m+1)^2填写成2m+1 阶幻方,C用2*(2m+1)^2+1到3*(2m+1)^2填写成2m+1阶幻方,D用3*(2m+1)^2 到4*(2m+1)^2填写成2m+1阶幻方。【注:^是平方的意思】 六阶幻方如下: 8 1 6 26 19 24 3 5 7 21 23 25 4 9 2 22 27 20 35 28 33 17 10 15 30 32 34 12 14 16 31 36 29 13 18 11 在A每行取m个小格(中心格及一侧对角线格为必换格,其余m-1格只要不是对角线格即可)也就是说在A中间一行取包裹中心格在内的第m个小格,其它行左侧边缘取m个小格, 将其与D中对应得方格交换;B与C任取m-1列进行交换6阶幻方就是4*1+2,那么m就是1在A中间一行取中心格1个小格,将其与D中相应方格进行交换,B与C接近右侧m-1列进行交换(6阶幻方m-1=0故不用交换)。 如下图用Strachey法生成的6阶幻方: 35 1 6 26 19 24 3 32 7 21 23 25 31 9 2 22 27 20 8 28 33 17 10 15 30 5 34 12 14 16 4 36 29 13 18 11 下面是一个关于上述幻方的编程: 【注:数不能太大】 #includestdio.h #includestdlib.h #define N 120 short a[N][N]={0}; short n; void jijiehuanfang(short n); void suangoujiehuanfang(short n); void danoujiehuanfang(short n); int main() { short j,i; printf(input one number that you like:); scanf(%d,n); if(n3) { printf(the number is error\n); exit(-1); } if(n%2==1)//判断是否是奇阶幻方 jijiehuanfang(n); else if(n%4==0)//判断是否为双偶阶幻方 suangoujiehuanfang(n); else//判断是否为单偶阶幻方 danoujiehuanfang(n); for(j=0;jn;j++) {

文档评论(0)

yyanrlund + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档