Problem 3
今回はProblem 3を…
素因数分解の問題ですね。
どこかでunfoldrを使った素因数分解を見た記憶があったので再現(?)してみました。
import Data.List fac x = case [y | y <- [2..x], x `mod` y == 0] of [] -> Nothing [t] -> Just (t, 0) (t:_) -> Just (t, x `div` t) main = print . maximum . unfoldr fac $ 600851475143
こんな感じだったかな?
今までunfoldrなんて使ってなかったのでとても勉強になりました。
それにしてもunfoldrって便利ですね。