Merzirac法
当n为奇数时,我们称幻方为奇阶幻方。
Merzirac法生成奇阶幻方:
- 在第一行居中的方格内放1
- 以后按顺序,向右斜上方填写数字。(称为斜步)
- 若出到方阵上方,把该数字填到本该所在列的最下格。
- 若出到方阵右方,把该数字填到本该所在行的最左格。
- 若右上已有数字,或出到方阵右上(即对角线方向), 则把数字填入上一个数字的下一格,即在n的下方放入n+1,(称为跳步),再按上述方法放置到2n,在2n的下方放入2n+1,在3n的下方放入3n+1… 依次填完所有数字即可完成任何一个奇阶幻方。
比如:构成一个5阶幻方。每一行、每一列、对角线的和都为65.
代码实现
取余巧妙做法
注意:
print((-1)%3)
print(1%3)
print(2%3)
print(3%3) #到边界余数也为0了,等于回到了最开始的地方
2
1
2
0
def magic_square_yu