発端
12歳の娘の算数の授業で、「任意の自然数の各桁を、一桁になるまで掛け算する回数の最大回数とその数を示せ。最大桁数を出した生徒には賞品が出ます」という自由課題があったそうだ。例えば、15なら1x5=5と1回。93なら9x3=27, 2x7=14, 1x4=3と3回という具合(続き)1/2
— Keiko Torii (@KeikoUTorii) 2019年8月13日
上記のツイートを見かけたのでやってみようと思いました。
結果
とりあえず動いたので晒します。
import sys args = sys.argv max = args[1] max = int(max) min = max / 10 min = int(min) print("max: "+ str(max)) print("min: "+ str(min)) result = 0 for i in range(min, max): j = str(i) count = 0 while len(j) > 1: count += 1 k = len(j) m = 1 for l in range(1, k+1): m = m * int(j[l-1]) j = str(m) if result < count: id = i result = count print(id) print(result)
引数に指定した数/10から引数に指定した数の範囲で検索します。
10, 100, 1000と指定しながらやってみたところ
max: 10000000、min: 1000000の場合
任意の自然数: 2677889で8回という結果が出ました。
さらに大きくした
max: 100000000、min: 10000000だと
利用していたPCがいっぱいいっぱいになってしまったので、中止しました。