diff options
Diffstat (limited to '31-41/35.hs')
-rw-r--r-- | 31-41/35.hs | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/31-41/35.hs b/31-41/35.hs new file mode 100644 index 0000000..185d024 --- /dev/null +++ b/31-41/35.hs @@ -0,0 +1,9 @@ +primeFactors :: Int -> [Int] + +primeFactors x = factor x primes + where primes = filterPrime [2..] + filterPrime (p:xs) = p:filterPrime [x | x <- xs, x `mod` p /= 0] + factor x l@(p:xs) + | p > x = [] + | x `mod` p == 0 = p:factor (x `div` p) l + | otherwise = factor x xs |