素因数分解
ちょっとなまった。ただでさえたいしたことないのに。
import List (intersperse) primes n = erat (2:[3,5..n]) where erat [] = [] erat (x:xs) = x : erat [y | y <- xs, y `mod` x /= 0] calc n m = (m, length (calc' n m)) where calc' n m = let (a, b) = divMod n m in if b == 0 then (a, b):calc' a m else [] factorize n = filter ((/= 0) . snd) $ map (calc n) (primes n) toStrFactorize = concat . intersperse "," . map toStr . factorize where toStr :: (Show a) => (a, a) -> String toStr (x, y) = (show x) ++ "^" ++ (show y)