コンニチハレバレトシタアオゾラ

つれづれなるままに、日暮らし、ぶろぐにむかひて、心にうつりゆくよしなしごとを、そこはかとなく書きつくれば、

「任意の自然数の各桁を、一桁になるまで掛け算する回数の最大回数とその数を示せ」の件

発端

上記のツイートを見かけたのでやってみようと思いました。

結果

とりあえず動いたので晒します。

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がいっぱいいっぱいになってしまったので、中止しました。