のてすきあ − 完全独習非プログラマー −

Haskell で Project Euler を解く素人遊び

Problem 34

145 は 階乗(!)を用いて 1! + 4! + 5! = 145 となる数である。このような数を全て求めてその和を計算する。

似たような計算の繰り返しになるので、連想リストを使ったら早くなるのではと思って試したが、結果から言えばどストレートに計算するのが一番早かった。もっと良い方法があるかも知れない。

数字探索の上限だけ少し考える必要があるが、6☓9! = 2,177,280 > 999,999、7×9! = 2,540,160 < 9,999,999 で(増加のスピードを考えれば)このあと大小関係が逆転することはないので、若干盛っても7×9!より大きな数を評価する必要はない。

しかし遅いのが気になる。もっと良い方法があるのではないだろうか。(2回言った)

計算効率化模索中☆