summaryrefslogtreecommitdiff
path: root/31-41/35.hs
diff options
context:
space:
mode:
Diffstat (limited to '31-41/35.hs')
-rw-r--r--31-41/35.hs9
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