Project Euler: Problem124
Haskell だと "(1,2) < (1,3)" みたいにタプルの比較ができてしまう。今回はこれがかなり便利。
import Data.List prime = p [2..] where p (x:xs) = x : p (filter (\y -> rem y x /= 0) xs) factor n = f n prime where f 1 _ = [] f n (p:ps) | rem n p == 0 = p : f (div n p) (p:ps) | otherwise = f n ps rad x = product $ nub $ factor x main = print $ (sort $ zip (map rad [1..100000]) [1..100000])!!(10000-1)