|
問題
すべての整数(非負整数、自然数)nは、1から始まる2つ以上の連続する自然数の和と差で表すことができる。
すなわち、2以上の整数kが存在して、
式 n=±1±2±3±4±5± … ±k
で表される。
答え
0= 1+2 -3
1=-1+2
2=-1+2 -3+4
3=-1+2 -3+4 -5+6
4=-1+2 -3+4 -5+6 -7+8
:
負数-1,-2,-3,…は、+,-の記号を反転させる。
(終り)
答え(帰納的な表現による冗長性のある解)
0= 1+2 -3
1=-1+2
となる。
n=(±1±2± … ±k)とすると、
恒等式
-(k+1)
+(k+2)
=1
より、
n+1=(±1±2± … ±k) + { -(k+1)+(k+2) }
負数-1,-2,-3,…は、+,-の記号を反転させる。
(終り)
問題
すべての整数(非負整数、自然数)nは、1から始まる2つ以上の連続する平方数(2乗数)の和と差で表すことができる。
すなわち、2以上の整数kが存在して、
式 n=±1^2±2^2±3^2±4^2±5^2± … ±k^2
で表される。
答え
0=1^2+2^2-3^2+4^2-5^2-6^2+7^2
1=1^2-2^2+3^2-4^2-5^2+6^2
2=-1^2-2^2-3^2+4^2
3=-1^2+2^2
4=-1^2-2^2+3^2
となる。
n=(±1^2±2^2± … ±k^2)とすると、
恒等式
+(k+1)^2-(k+2)^2
-(k+3)^2+(k+4)^2
=4
より、
n+4=(±1^2+ … ±k^2) + { (k+1)^2-(k+2)^2-(k+3)^2+(k+4)^2 }
(終り)
問題
すべての整数(非負整数、自然数)nは、1から始まる2つ以上の連続する立方数(3乗数)の和と差で表すことができる。
すなわち、2以上の整数kが存在して、
式 n=±1^3±2^3±3^3±4^3±5^3± … ±k^3
で表される。
答え
-(x+1)^3+(x+2)^3+(x+3)^3-(x+4)^3
+(x+5)^3-(x+6)^3-(x+7)^3+(x+8)^3
=48
(終り)
同様に、
問題
すべての整数(非負整数、自然数)nは、1から始まる2つ以上の連続する4乗数の和と差で表すことができる。
すなわち、2以上の整数kが存在して、
式 n=±1^4±2^4±3^4±4^4±5^4± … ±k^4
で表される。
答え
個数が半分で、1次式になるものを見つけて、
残り半分は、+,-の記号を反転したものを加える。
で、恒等式を見つけると、
+(x+1)^4 -(x+2)^4 -(x+3)^4 +(x+4)^4 -(x+5)^4 +(x+6)^4 +(x+7)^4 -(x+8)^4
-(x+9)^4+(x+10)^4+(x+11)^4-(x+12)^4+(x+13)^4-(x+14)^4-(x+15)^4+(x+16)^4
=1536
1,4,48,1536,…
最適解のひとつを求めるプログラム
OPTION ARITHMETIC RATIONAL !多桁整数
LET M=3 !べき乗
LET X=48 !0からXまで
DIM F(0 TO X) !出現回数
MAT F=ZER
FOR P=2 TO 2^32-1 !組み合わせ(ビットパターン)
LET R=0 !最上位の1の位置
LET w=P
LET A=0 !n=±1^m±2^m±3^m± … ±k^m
LET B=0
LET K=1 !10進法から2進法へ
DO WHILE w>0
LET s=MOD(w,2)
IF s=1 THEN LET R=K
LET A=A+(2*s-1)*K^M !0,1 → -1,1
LET B=B+(1-2*s)*K^M !0,1 → 1,-1
LET w=INT(w/2) !次の桁へ
LET K=K+1
LOOP
IF (A>=0 AND A<=X) THEN CALL PrintOut(A,P,1) !範囲内なら結果を表示する
IF (B>=0 AND B<=X) THEN CALL PrintOut(B,P,-1)
IF P=2^R-1 THEN !2のべき乗でひと区切りする
FOR i=0 TO X !すべてが見つかったなら
IF F(i)=0 THEN EXIT FOR
NEXT i
IF i>X THEN EXIT FOR !終了!!!
END IF
NEXT P
PRINT P; 2^R !debug
MAT PRINT F; !debug
SUB PrintOut(N,P,S) !式 n=±1^m±2^m±3^m± … ±k^m を表示する
LET F(N)=F(N)+1 !出現回数
IF F(N)=1 THEN !最初なら、式を表示する
PRINT STR$(N);"=";
LET w=P !ビットパターン
LET K=1
DO WHILE w>0 !10進法から2進法へ
IF MOD(w,2)=0 THEN !±
IF S=1 THEN PRINT "-"; ELSE PRINT "+";
ELSE
IF S=1 THEN PRINT "+"; ELSE PRINT "-";
END IF
PRINT STR$(K); !k^m
IF M>1 THEN PRINT "^";STR$(M);
LET w=INT(w/2) !次の桁へ
LET K=K+1
LOOP
PRINT
END IF
END SUB
END
|
|