平方数問題・考察(2)を紹介します。
考察(2)
0から9までの10個の数字を1回使って得られる数値で、ある正整数のk(3≦k≦10)乗になるものを考察した。
プログラムで実験したところ、該当する数は見つからなかった。
●プログラム(PB221.bas)
' << PB221.bas >> ' Tiny Basic ' '(考察2)0から9までの10個の数字を1回使って得られる数値で、 ' ある正整数のk(3≦k≦10)乗になるものを考察せよ。 ' Dim D(9): ' D(I)=0は、数字Iが出現していないことを意味し、 ' D(I)=1は、数字Iが出現したことを意味する。 ' K乗した結果に、0から9までの10個の数字が1回現れているかどうかを ' 調べる。 ' For K=3 To 10 ' COUNT=0: ' 解の個数。 ' ' K乗したとき、初めて123456789を超える整数をN1とする。 N1=1 Do W=1: For I=1 To K: W=W*N1: Next I If W > 1023456789 Then Exit Do N1=N1+1 Loop ' ' K乗したとき、初めて987654321を超える整数-1をN2とする。 N2=N1+1 Do W=1: For I=1 To K: W=W*N2: Next I If W > 9876543210 Then Exit Do N2=N2+1 Loop N2=N2-1 ' Print"K=";K;" N1=";N1;" N2=";N2 ' ' N1からN2までの整数について調べる。 For N=N1 To N2 ' 初期設定。 For I=0 To 9: D(I)=0: Next I ' ' TはNのK乗。 T=1: For J=1 To K: T=T*N: Next J S=T ' 変数Tの値を各桁に分解していく。 While T > 0 W=T Mod 10: If D(W) > 0 Then Exit Do D(W)=1: T=Int(T/10) Wend ' ' 該当する結果を表示。 If T = 0 Then COUNT=COUNT+1 Print Using"(###) ";COUNT; Print Using "#####の##乗 = ##########";N;K;S End If Next N ' If COUNT = 0 Then Print"該当する数なし" End If Next K End
実行結果