PEをMathematicaで

Project Eulerに挑戦してみよう

Project Euler 34 / 桁の階乗

145は面白い数である。1! + 4! + 5! = 1 + 24 + 120 = 145 となる。

各桁の数の階乗の和が自分自身と一致するような数の和を求めよ。

(注)1! = 1 と 2! = 2 は総和に含めてはならない。

Problem 34 - Project Euler

どこまで調べればいいか

どこかの国の数学コンテストに類題が出ていたような気が…… まず何桁まで考えればいいのか調べます。

k 桁の数の場合,左辺は k*1! 以上 k*9! 以下。
右辺は10^(k-1) 以上 10^k 未満(10^k -1 以下)。

これらが共通部分をもつには 10^(k-1) ≦ k*9! が必要です。

7桁までですね。

桁ごとの!をとって足す

適当に判定条件を作って Select して Total します。

ためしに条件をみたす数を全部書き出してみたら,2個しかありませんでした。145 と 40585 です。145 は問題文中で与えられていますから,約10^7個調べて新たに見つかったのは1個だけだったという効率の悪さでした。