summaryrefslogtreecommitdiff
path: root/src/misc.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/misc.hs')
-rw-r--r--src/misc.hs35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/misc.hs b/src/misc.hs
new file mode 100644
index 0000000..f7623e4
--- /dev/null
+++ b/src/misc.hs
@@ -0,0 +1,35 @@
+
+
+
+
+modulo :: Int -> Int -> Int
+modulo x y =
+ x - (x `div` y) * y
+
+
+
+primeFactors :: Int -> [Int]
+primeFactors x =
+ let p = (\x e c -> if (x == 1)
+ then (reverse c)
+ else if (x `modulo` (head e) == 0)
+ then p (x `div` (head e)) e ((head e) : c)
+ else p x (tail e) c)
+ in p x euler []
+
+
+
+euler :: [Int]
+euler =
+ let f = (\list -> (head list) : (f (filter (\x -> x `modulo` (head list) /= 0) list)))
+ in f [2..]
+
+
+
+isPowerOf :: Int -> Int -> Bool
+isPowerOf x y =
+ case (compare x y) of
+ LT -> False
+ EQ -> True
+ GT -> if (x `modulo` y == 0) then isPowerOf (x `div` y) y else False
+