奇妙な数

 投稿者:山中和義  投稿日:2014年 1月22日(水)11時41分38秒
  たとえば、
 1^2      + 5^2      + 6^2      = 2^2      + 3^2      + 7^2
 12^2     + 56^2     + 64^2     = 24^2     + 32^2     + 76^2
 123^2    + 561^2    + 642^2    = 242^2    + 323^2    + 761^2
 1237^2   + 5619^2   + 6428^2   = 2428^2   + 3237^2   + 7619^2
 12378^2  + 56194^2  + 64286^2  = 24286^2  + 32378^2  + 76194^2
 123789^2 + 561945^2 + 642864^2 = 242868^2 + 323787^2 + 761943^2
  23789^2 +  61945^2 +  42864^2 =  42868^2 +  23787^2 +  61943^2
   3789^2 +   1945^2 +   2864^2 =   2868^2 +   3787^2 +   1943^2
    789^2 +    945^2 +    864^2 =    868^2 +    787^2 +    943^2
     89^2 +     45^2 +     64^2 =     68^2 +     87^2 +     43^2
      9^2 +      5^2 +      4^2 =      8^2 +      7^2 +      3^2

   19^2   +   55^2   +   64^2   =   28^2   +   37^2   +   73^2
  1289^2  +  5645^2  +  6464^2  =  2468^2  +  3287^2  +  7643^2
 123789^2 + 561945^2 + 642864^2 = 242868^2 + 323787^2 + 761943^2
  2378^2  +  6194^2  +  4286^2  =  4286^2  +  2378^2  +  6194^2
   37^2   +   19^2   +   28^2   =   28^2   +   37^2   +   19^2
となる数が存在する。(ちなみに、1乗でも成り立つ)

一般に、
 (X-(A+B))^2+(X+A)^2+(X+B)^2=(X-B)^2+(X-A)^2+(X+(A+B))^2
とすればよい。


まず、a^2+b^2+c^2=d^2+e^2+f^2を満たす1桁の場合は、
  a  b  c   d  e  f
 -------------------
  1  4  9   3  5  8  *1乗のときは成り立たない
  1  5  6   2  3  7
  1  6  8   2  4  9
  2  3  8   4  5  6  *
  2  6  7   3  4  8
  3  7  8   4  5  9
である。

その中から、
  1  5  6   2  3  7
  3  7  8   4  5  9
を選び、6桁の数に着目して、1≦A<Bのすると、

  X-(A+B)  X+A      X+B      X-B      X-A      X+(A+B) ※2乗の記号は省く
 ------------------------------------------------------
  1      + 5      + 6      = 2      + 3      + 7
  1?     + 5?     + 6?     = 2?     + 3?     + 7?
  1??    + 5??    + 6??    = 2??    + 3??    + 7??
  1???   + 5???   + 6???   = 2???   + 3???   + 7???
  1????  + 5????  + 6????  = 2????  + 3????  + 7????
  1????9 + 5????5 + 6????4 = 2????8 + 3????7 + 7????3
   ????9 +  ????5 +  ????4 =  ????8 +  ????7 +  ????3
    ???9 +   ???5 +   ???4 =   ???8 +   ???7 +   ???3
     ??9 +    ??5 +    ??4 =    ??8 +    ??7 +    ??3
      ?9 +     ?5 +     ?4 =     ?8 +     ?7 +     ?3
       9 +      5 +      4 =      8 +      7 +      3
を考える。

ここで、検索時間が短縮になるように、
左辺の一番小さい数 X-(A+B) (6つの数の中で一番小さい)を、123789とする。
左辺の一番大きい数 X+B を、642864とする。

したがって、
 1      + 5      + 6      = 2      + 3      + 7
 12     + 5?     + 64     = 2?     + 3?     + 7?
 123    + 5??    + 642    = 2??    + 3??    + 7??
 1237   + 5???   + 6428   = 2???   + 3???   + 7???
 12378  + 5????  + 64286  = 2????  + 3????  + 7????
 123789 + 5????5 + 642864 = 2????8 + 3????7 + 7????3
  23789 +  ????5 +  42864 =  ????8 +  ????7 +  ????3
   3789 +   ???5 +   2864 =   ???8 +   ???7 +   ???3
    789 +    ??5 +    864 =    ??8 +    ??7 +    ??3
     89 +     ?5 +     64 =     ?8 +     ?7 +     ?3
      9 +      5 +      4 =      8 +      7 +      3
となる。

左辺の 5????5 の????を、1111から9999まで変化させて、Xを求める。
このとき、次のことに注意する。
・桁をひとつずつ消して、桁がひとつずつ減るので、0を含まない。
・左辺の和が3の倍数になる。

このXから、右辺の数が確定するので、その6つの数で。
桁をひとつずつ消して、条件を満たすものを洗い出せばよい。



PUBLIC NUMERIC K !桁数
LET K=6

LET P=123789 !X-(A+B)
LET R=642864 !X+B

LET S=0

FOR QQ=(10^(K-2)-1)/9 TO 10^(K-2)-1 !X+A
   IF POS(STR$(QQ),"0")>0 THEN !0を除く
   ELSE
      LET Q=(5*10^(K-2)+QQ)*10+5

      LET X=(P+Q+R)/3
      IF X=INT(X) THEN !和が3の倍数

         LET D=2*X-R !右辺 X-B
         IF POS(STR$(D),"0")>0 THEN
         ELSE
            IF INT(D/10^(K-1))=2 AND MOD(D,10)=8 THEN

               LET E=2*X-Q !右辺 X-A
               IF POS(STR$(E),"0")>0 THEN
               ELSE
                  IF INT(E/10^(K-1))=3 AND MOD(E,10)=7 THEN

                     LET F=2*X-P !右辺 X+(A+B)
                     IF POS(STR$(F),"0")>0 THEN
                     ELSE
                        IF INT(F/10^(K-1))=7 AND MOD(F,10)=3 THEN
                        !!!PRINT P;Q;R; D;E;F !debug

                           CALL chk(P,Q,R,D,E,F, rc)
                           IF rc<>0 THEN !条件を満たす
                              LET S=S+1
                              PRINT P;Q;R; D;E;F
                           END IF

                        END IF !f
                     END IF

                  END IF !e
               END IF

            END IF !d
         END IF

      END IF !3の倍数

   END IF !q
NEXT QQ

PRINT S;"通り"

END


EXTERNAL SUB chk(P,Q,R,D,E,F, rc) !条件を満たすかどうか確認する
LET rc=0
FOR i=1 TO K !最上位の桁を消す
   LET T=10^i
   IF MOD(P,T)^2+MOD(Q,T)^2+MOD(R,T)^2<>MOD(D,T)^2+MOD(E,T)^2+MOD(F,T)^2 THEN EXIT FOR
NEXT i
IF i>K THEN

   FOR i=1 TO K-1 !一の位の桁を消す
      LET T=10^i
      IF INT(P/T)^2+INT(Q/T)^2+INT(R/T)^2<>INT(D/T)^2+INT(E/T)^2+INT(F/T)^2 THEN EXIT FOR
   NEXT i
   IF i>K-1 THEN

      LET W=INT((K-1)/2)
      FOR i=1 TO W !最上位と一の位の桁を消す
         LET T=10^i
         LET TT=10^(K-i)
         IF INT(MOD(P,TT)/T)^2+INT(MOD(Q,TT)/T)^2+INT(MOD(R,TT)/T)^2 <> &
&           INT(MOD(D,TT)/T)^2+INT(MOD(E,TT)/T)^2+INT(MOD(F,TT)/T)^2 THEN EXIT FOR
      NEXT i
      IF i>W THEN

         LET W=INT((K-1)/2)
         FOR i=1 TO W !最上位と一の位の桁を残す
            LET T=10^(INT(K/2)-i)
            LET TT=10^(INT(K/2)+i)
            IF (INT(P/TT)*T+MOD(P,T))^2+(INT(Q/TT)*T+MOD(Q,T))^2+(INT(R/TT)*T+MOD(R,T))^2 <> &
&              (INT(D/TT)*T+MOD(D,T))^2+(INT(E/TT)*T+MOD(E,T))^2+(INT(F/TT)*T+MOD(F,T))^2 THEN EXIT FOR
         NEXT i
         IF i>W THEN
            LET rc=1 !OK
         END IF

      END IF

   END IF

END IF
END SUB


実行結果

123789  531315  642864  222448  333997  741523
123789  531345  642864  222468  333987  741543
123789  531375  642864  222488  333977  741563
123789  531615  642864  222648  333897  741723
123789  531645  642864  222668  333887  741743
123789  531675  642864  222688  333877  741763
123789  531915  642864  222848  333797  741923
123789  531945  642864  222868  333787  741943
123789  531975  642864  222888  333777  741963
123789  534315  642864  224448  332997  743523
123789  534345  642864  224468  332987  743543
123789  534375  642864  224488  332977  743563
123789  534615  642864  224648  332897  743723
123789  534645  642864  224668  332887  743743
123789  534675  642864  224688  332877  743763
123789  534915  642864  224848  332797  743923
123789  534945  642864  224868  332787  743943
123789  534975  642864  224888  332777  743963
123789  537315  642864  226448  331997  745523
123789  537345  642864  226468  331987  745543
123789  537375  642864  226488  331977  745563
123789  537615  642864  226648  331897  745723
123789  537645  642864  226668  331887  745743
123789  537675  642864  226688  331877  745763
123789  537915  642864  226848  331797  745923
123789  537945  642864  226868  331787  745943
123789  537975  642864  226888  331777  745963
123789  561315  642864  242448  323997  761523
123789  561345  642864  242468  323987  761543
123789  561375  642864  242488  323977  761563
123789  561615  642864  242648  323897  761723
123789  561645  642864  242668  323887  761743
123789  561675  642864  242688  323877  761763
123789  561915  642864  242848  323797  761923
123789  561945  642864  242868  323787  761943    ←←←
123789  561975  642864  242888  323777  761963
123789  564315  642864  244448  322997  763523
123789  564345  642864  244468  322987  763543
123789  564375  642864  244488  322977  763563
123789  564615  642864  244648  322897  763723
123789  564645  642864  244668  322887  763743
123789  564675  642864  244688  322877  763763
123789  564915  642864  244848  322797  763923
123789  564945  642864  244868  322787  763943
123789  564975  642864  244888  322777  763963
123789  567315  642864  246448  321997  765523
123789  567345  642864  246468  321987  765543    ←←← 並びがきれい
123789  567375  642864  246488  321977  765563
123789  567615  642864  246648  321897  765723
123789  567645  642864  246668  321887  765743
123789  567675  642864  246688  321877  765763
123789  567915  642864  246848  321797  765923
123789  567945  642864  246868  321787  765943
123789  567975  642864  246888  321777  765963
123789  591315  642864  262448  313997  781523
123789  591345  642864  262468  313987  781543
123789  591375  642864  262488  313977  781563
123789  591615  642864  262648  313897  781723
123789  591645  642864  262668  313887  781743
123789  591675  642864  262688  313877  781763
123789  591915  642864  262848  313797  781923
123789  591945  642864  262868  313787  781943
123789  591975  642864  262888  313777  781963
123789  594315  642864  264448  312997  783523
123789  594345  642864  264468  312987  783543
123789  594375  642864  264488  312977  783563
123789  594615  642864  264648  312897  783723
123789  594645  642864  264668  312887  783743
123789  594675  642864  264688  312877  783763
123789  594915  642864  264848  312797  783923
123789  594945  642864  264868  312787  783943
123789  594975  642864  264888  312777  783963
123789  597315  642864  266448  311997  785523
123789  597345  642864  266468  311987  785543
123789  597375  642864  266488  311977  785563
123789  597615  642864  266648  311897  785723
123789  597645  642864  266668  311887  785743
123789  597675  642864  266688  311877  785763
123789  597915  642864  266848  311797  785923
123789  597945  642864  266868  311787  785943
123789  597975  642864  266888  311777  785963
81 通り


 

戻る