Homeに戻る  一覧に戻る 

5x5 Magic square of squares of different integers


[2024.06.29]相異なる平方数から成る5x5魔法陣


■問題

       相異なる正整数の平方数から成る5x5魔法陣(ここでは、5x5平方数魔法陣と呼ぶ)Aを求めよ。

ここで、5x5平方数魔法陣とは、以下の条件(*)を満たす行列Aとする。
・A=(a[i,j]^2)は5行5列の行列で、その[i,j]成分は相異なる正整数a[i,j]の平方数a[i,j]^2である。
・縦,横,斜めの5個の成分(平方数)の合計がある正整数Lに等しい。
       a[i,1]^2+a[i,2]^2+a[i,3]^2+a[i,4]^2+a[i,5]^2=L (i=1,2,3,4,5),
       a[1,j]^2+a[2,j]^2+a[3,j]^2+a[4,j]^2+a[5,j]^2=L (j=1,2,3,4,5),
       a[1,1]^2+a[2,2]^2+a[3,3]^2+a[4,4]^2+a[5,5]^2=L,
       a[1,5]^2+a[2,4]^2+a[3,3]^2+a[4,2]^2+a[5,1]^2=L

結果を簡潔に表示するために、A=(a[i,j]^2)の代わりに、Aの各成分の平方根から成る行列A*=(a[i,j])を使うことがある。

ここで、L4=L-a[3,3]^2とする。oko
■(90°回転と鏡映で生成される)2面体群D8の元で写されたのを同一視するために、行列Aの要素に以下の条件(*2*)を付けて良い。
       a[1,1] < min{ a[1,5], a[5,1], a[5,5] },
       a[1,5] < a[5,1],

このような5x5平方数魔法陣は存在する。
|A|=max{a[i,j]}が最小になるものは、L=1375(L4=1275)のときで、D8の元で写されたものを同一視すると、以下の2個である。

msqsq5-1275-1.png msqsq5-1275-2.png

■5x5平方数魔法陣はgcd({a[i,j]})=1、つまり、primitiveなものだけに制限して良い。

■L4と以下の4個の条件(*3*)を満たす16個の相異なる自然数v[k](1 <=k <=16)の組を見つけたと仮定する。
       v[1]^2+v[2]^2+v[3]^2+v[4]^2=L4,
       v[5]^2+v[6]^2+v[7]^2+v[8]^2=L4,
       v[9]^2+v[10]^2+v[11]^2+v[12]^2=L4,
       v[13]^2+v[14]^2+v[15]^2+v[16]^2=L4
(v[k])を平方和がL4である4個の自然数の4組とみなして、5x5行列{a[i,j]}に、以下のように埋め込む。

v[1]^2 - v[9]^2 - v[5]^2
- v[2]^2 v[10]^2 v[6]^2 -
v[13]^2 v[14]^2 - v[15]^2 v[16]^2
- v[7]^2 v[11]^2 v[3]^2 -
v[8]^2 - v[12]^2 - v[4]^2

このとき、自然数a[3,3]を与えて、L=L4+a[3,3]^2とすると、以下の4条件が成立する。
       a[1,1]^2+a[2,2]^2+a[3,3]^2+a[4,4]^2+a[5,5]^2=L,
       a[1,5]^2+a[2,4]^2+a[3,3]^2+a[4,2]^2+a[5,1]^2=L,
       a[1,3]^2+a[2.3]^2+a[3,3]^2+a[4,3]^2+a[5,3]^2=L,
       a[3,1]^2+a[3,2]^2+a[3,3]^2+a[3,4]^2+a[3,5]^2=L

さらに残りの8個の平方数(-)が存在して、5x5の平方数魔法陣(a[i,j]^2)に拡張できるためには、以下の2条件(*4*)を満たす必要がある。
       -2*v[2]^2-2*v[6]^2-2*v[3]^2-2*v[7]^2+2*v[14]^2+2*v[15]^2+3*v[13]^2+3*v[16]^2-v[10]^2-v[11]^2=0,
       2*v[1]^2+2*v[4]^2-2*v[6]^2-2*v[7]^2+v[13]^2+v[16]^2-v[10]^2-v[11]^2=0

また、a[3,3]以外の残りの8個の平方数は、以下の4条件(*5*)を満たす必要がある。
       a[1,4]^2-a[5,2]^2 = (v[2]^2+v[14]^2+v[7]^2)-(v[1]^2+v[9]^2+v[5]^2) = (v[6]^2+v[15]^2+v[3]^2)-(v[8]^2+v[12]^2+v[4]^2),
       a[4,5]^2-a[2,1]^2 = (v[2]^2+v[14]^2+v[7]^2)-(v[1]^2+v[13]^2+v[8]^2) = (v[6]^2+v[15]^2+v[3]^2)-(v[1]^2+v[9]^2+v[5]^2),
       a[4,1]^2-a[2,5]^2 = (v[5]^2+v[16]^2+v[4]^2)-(v[2]^2+v[10]^2+v[6]^2) = (v[5]^2+v[16]^2+v[4]^2)-(v[2]^2+v[10]^2+v[6]^2),
       a[5,2]^2-a[1,4]^2 = (v[1]^2+v[13]^2+v[8]^2)-(v[2]^2+v[10]^2+v[6]^2) = (v[5]^2+v[16]^2+v[4]^2)-(v[2]^2+v[10]^2+v[6]^2)
ここで、各行の左辺は、2平方数の差なので、(mod 4)で、0,1,3のどれかに一致する(2には一致しない)ことに注意する。

■L4を与えて、max{a[i,j]} <= Nの範囲で、A=(a[i,j]^2)が上記の条件を5x5平方数魔法陣となるような正整数行列A*=(a[i,j])を求める。
アルゴリズムは以下の通り。
(1)L4に対して、条件(*3*)を満たすv[i](1 <= i <= 16)を探して、以下を繰り返す。
(2){v[1],v[2],v[3],v[4]}を置換群S4の元の作用により並べ替えたものを、a[1,1],a[2,2],a[4,4],a[5,5]とする。
    {v[5],v[6],v[7],v[8]}を置換群S4の元の作用により並べ替えたものを、a[1,5],a[2,4],a[4,2],a[5,1]とする。
    {v[9],v[10],v[11],v[12]}を置換群S4の元の作用により並べ替えたものを、a[1,3],a[2,3],a[4,3],a[5,3]とする。
    {v[13],v[14],v[15],v[16]}を置換群S4の元の作用により並べ替えたものを、a[3,1],a[3,2],a[3,4],a[3,5]とする。
    これらの組み合わせの中で、条件(*2*),(*4*)を満たすものを選択する。
    さらに、(*5*)の中辺と右辺が(mod 4)で2に一致しないものを選択する。
    これらの組み合わせについて、以下を繰り返す。
(3)a[3,3]を与えて、以下を繰り返す。
(4)a[1,4]^2-a[5,2]^2=(v[2]^2+v[14]^2+v[7]^2)-(v[1]^2+v[9]^2+v[5]^2)を満たすように、a[1,4]とa[5,2]を求める。
    a[4,5],a[5,2]を求める。以下を繰り返す。
(5)a[4,1]^2-a[2,5]^2=(v[5]^2+v[16]^2+v[4]^2)-(v[2]^2+v[10]^2+v[6]^2)を満たすように、a[4,1]とa[2,5]を求める。
    a[5,2],a[1,4]を求める。
(6)行列A=(a[i,j]^2)が魔法陣の残りの条件を満たし、gcd({a[i,j]})=1であれば、A*=(a[i,j])を出力する。

■max{a[i,j]} <= 50かつかつ1270 <= L4 <=1300の範囲で、A=(a[i,j]^2)が上記の条件(*),(*2*)を満たす5x5平方数魔法陣となるような正整数行列A*=(a[i,j])を求める。
[Cプログラムによる計算]
-bash-3.1$ gcc -O2 msq5.c -lm -o msq5
-bash-3.1$ ./msq5 -h
Usage: msq5 n
n : max{a[1,1],a[1,3],a[1,5],a[2,1],a[2,5],a[3,1],a[3,2],a[3,4],a[3,5],a[4,1],a[4,5],a[5,2],a[5,4]}<=n
-s                 max{a[*,*]}<=n
-L L1 [L2]         L1<=a[1,1]^2+a[2,2]^2+a[4,4]^2+a[5,5]^2<=L2
-LL LL1 [LL2]      LL1<=a[1,1]^2+a[2,2]^2+a[3,3]^2+a[4,4]^2+a[5,5]^2<=LL2
-p                 a[i,j] are all primes
-r1 L              output v[16] where v[h+1]^2+v[h+2]^2+v[h+3]^2+v[h+4]^2=L(h=0,4,8,12)
-r2 v1 v2 ... b16  output w[16] where w is permutaion of w and F1(w)=F2(w)=0,F3(w)   !=2,F4(w)   !=2
-r3 v1 v2 ... v16  output a[25] where a is extension of v[16]
-r4 L a33          output a[25] where a[1,1]^2+a[2,2]^2+a[4,4]^2+a[5,5]^2=L,a[3,3]=a33
-d                 include non-primitive solution
-h                 help
       where  25<=n<=100000.

-bash-3.1$ time ./msq5 50 -s -L 1270 1300
L=[1270,1300]
#{i:r[i]==0, 1<=n<=200000}=200000
L=[1270,1300]
L=1270
[L,c2]=[1270,2662]
L=1271
[L,c2]=[1271,14]
L=1272
[L,c2]=[1272,0]
L=1273
[L,c2]=[1273,2]
L=1274
[L,c2]=[1274,1241]
L=1275
[1,22,11,12,25, 2,16,23,15,19, 31,13,10,9,8, 3,5,24,27,6, 20,21,7,14,17]
[1,12,11,22,25, 3,27,24,5,6, 31,9,10,13,8, 2,15,23,16,19, 20,14,7,21,17]
[L,c2]=[1275,486]
L=1276
[L,c2]=[1276,66]
L=1277
[L,c2]=[1277,2]
L=1278
[L,c2]=[1278,9578]
L=1279
[L,c2]=[1279,10]
L=1280
[L,c2]=[1280,0]
L=1281
[L,c2]=[1281,250]
L=1282
[L,c2]=[1282,830]
L=1283
[L,c2]=[1283,3]
L=1284
[L,c2]=[1284,35]
L=1285
[L,c2]=[1285,103]
L=1286
[L,c2]=[1286,590]
L=1287
[L,c2]=[1287,252]
L=1288
[L,c2]=[1288,0]
L=1289
[L,c2]=[1289,4]
L=1290
[L,c2]=[1290,10905]
L=1291
[L,c2]=[1291,3]
L=1292
[L,c2]=[1292,29]
L=1293
[L,c2]=[1293,71]
L=1294
[L,c2]=[1294,1721]
L=1295
[L,c2]=[1295,118]
L=1296
[L,c2]=[1296,0]
L=1297
[L,c2]=[1297,37]
L=1298
[L,c2]=[1298,492]
L=1299
[L,c2]=[1299,104]
L=1300
[L,c2]=[1300,54]

real    9m53.677s
user    9m53.635s
sys     0m0.010s
-bash-3.1$
このように、上で紹介した(L=1375である)平方魔法陣が2個見つかった。

■max{a[i,j]} <= 100かつL4<=10000のの範囲で、A=(a[i,j]^2)が上記の条件(*),(**)を満たす5x5平方魔法陣となるような正整数行列B=(a[i,j])を求めて(計算中)、Lの小さい順に並び替えると、このようになる。

5x5平方数魔法陣で、Lが2番目に小さいのは、L=2479(L4=2283)のもの(4個)で、以下のようになる。


msqsq5-2479-1.png msqsq5-2479-2.png msqsq5-2479-3.png msqsq5-2749-4.png

■max{a[i,j]} <= 1000かつL4<=10000の範囲で、5x5平方数魔法陣A=(a[i,j]^2)となるような相異なる素数の行列A*=(a[i,j])を求めて(計算中)、Lの小さい順に並び替えると、このようになる。

素数の平方数から成る5x5平方数魔法陣で、Lが最も小さいのは、L=34229(L4=32020)のもの(2個)で、以下のようになる。


msqsq5p-34229-1.png msqsq5p-34229-2.png


[参考文献]


Last Update: 2024.07.04
H.Nakao

Homeに戻る[Homeに戻る]  一覧に戻る[一覧に戻る]