Project Euler: Problem5
素数列を作る関数は今までに何回書いたかわからん…。
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 merge [] = 1 merge ([]:xss) = merge xss merge ((x:xs):xss) = x * (merge (xs : (map (delete x) xss))) main = print $ merge $ map factor [2..20]