summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--H1.hs (renamed from h1.hs)0
-rw-r--r--H10.hs (renamed from h10.hs)4
-rw-r--r--H11.hs (renamed from h11.hs)0
-rw-r--r--H12.hs (renamed from h12.hs)0
-rw-r--r--H13.hs (renamed from h13.hs)0
-rw-r--r--H14.hs (renamed from h14.hs)0
-rw-r--r--H15.hs (renamed from h15.hs)0
-rw-r--r--H16.hs (renamed from h16.hs)0
-rw-r--r--H17.hs (renamed from h17.hs)0
-rw-r--r--H18.hs (renamed from h18.hs)0
-rw-r--r--H19.hs (renamed from h19.hs)0
-rw-r--r--H2.hs (renamed from h2.hs)0
-rw-r--r--H20.hs (renamed from h20.hs)0
-rw-r--r--H21.hs (renamed from h21.hs)0
-rw-r--r--H22.hs (renamed from h22.hs)0
-rw-r--r--H23.hs (renamed from h23.hs)0
-rw-r--r--H24.hs (renamed from h24.hs)0
-rw-r--r--H25.hs (renamed from h25.hs)0
-rw-r--r--H26.hs (renamed from h26.hs)0
-rw-r--r--H27.hs (renamed from h27.hs)0
-rw-r--r--H28.hs (renamed from h28.hs)0
-rw-r--r--H28n.hs (renamed from h28n.hs)0
-rw-r--r--H3.hs (renamed from h3.hs)0
-rw-r--r--H31.hs15
-rw-r--r--H32.hs3
-rw-r--r--H33.hs3
-rw-r--r--H34.hs3
-rw-r--r--H35.hs21
-rw-r--r--H36.hs4
-rw-r--r--H4.hs (renamed from h4.hs)0
-rw-r--r--H5.hs (renamed from h5.hs)0
-rw-r--r--H6.hs (renamed from h6.hs)0
-rw-r--r--H7.hs (renamed from h7.hs)0
-rw-r--r--H8.hs (renamed from h8.hs)0
-rw-r--r--H9.hs (renamed from h9.hs)0
35 files changed, 53 insertions, 0 deletions
diff --git a/h1.hs b/H1.hs
index f0216c2..f0216c2 100644
--- a/h1.hs
+++ b/H1.hs
diff --git a/h10.hs b/H10.hs
index 68ffade..0694b69 100644
--- a/h10.hs
+++ b/H10.hs
@@ -1,3 +1,7 @@
+module H10
+( encode
+) where
+
import Control.Applicative
import Control.Arrow
import Data.List
diff --git a/h11.hs b/H11.hs
index 77b7295..77b7295 100644
--- a/h11.hs
+++ b/H11.hs
diff --git a/h12.hs b/H12.hs
index 9b1b50e..9b1b50e 100644
--- a/h12.hs
+++ b/H12.hs
diff --git a/h13.hs b/H13.hs
index ec0a395..ec0a395 100644
--- a/h13.hs
+++ b/H13.hs
diff --git a/h14.hs b/H14.hs
index e7ad73d..e7ad73d 100644
--- a/h14.hs
+++ b/H14.hs
diff --git a/h15.hs b/H15.hs
index a8f84c1..a8f84c1 100644
--- a/h15.hs
+++ b/H15.hs
diff --git a/h16.hs b/H16.hs
index 68978a7..68978a7 100644
--- a/h16.hs
+++ b/H16.hs
diff --git a/h17.hs b/H17.hs
index fa26f35..fa26f35 100644
--- a/h17.hs
+++ b/H17.hs
diff --git a/h18.hs b/H18.hs
index b9e8192..b9e8192 100644
--- a/h18.hs
+++ b/H18.hs
diff --git a/h19.hs b/H19.hs
index 45c5a07..45c5a07 100644
--- a/h19.hs
+++ b/H19.hs
diff --git a/h2.hs b/H2.hs
index 60693ef..60693ef 100644
--- a/h2.hs
+++ b/H2.hs
diff --git a/h20.hs b/H20.hs
index 670edf6..670edf6 100644
--- a/h20.hs
+++ b/H20.hs
diff --git a/h21.hs b/H21.hs
index c23b31b..c23b31b 100644
--- a/h21.hs
+++ b/H21.hs
diff --git a/h22.hs b/H22.hs
index 3557f07..3557f07 100644
--- a/h22.hs
+++ b/H22.hs
diff --git a/h23.hs b/H23.hs
index f85a87a..f85a87a 100644
--- a/h23.hs
+++ b/H23.hs
diff --git a/h24.hs b/H24.hs
index 0baeaba..0baeaba 100644
--- a/h24.hs
+++ b/H24.hs
diff --git a/h25.hs b/H25.hs
index d590fce..d590fce 100644
--- a/h25.hs
+++ b/H25.hs
diff --git a/h26.hs b/H26.hs
index 4497e8c..4497e8c 100644
--- a/h26.hs
+++ b/H26.hs
diff --git a/h27.hs b/H27.hs
index 8c0dab1..8c0dab1 100644
--- a/h27.hs
+++ b/H27.hs
diff --git a/h28.hs b/H28.hs
index 0ff75cc..0ff75cc 100644
--- a/h28.hs
+++ b/H28.hs
diff --git a/h28n.hs b/H28n.hs
index bf584c7..bf584c7 100644
--- a/h28n.hs
+++ b/H28n.hs
diff --git a/h3.hs b/H3.hs
index 7c8604d..7c8604d 100644
--- a/h3.hs
+++ b/H3.hs
diff --git a/H31.hs b/H31.hs
new file mode 100644
index 0000000..9c321ca
--- /dev/null
+++ b/H31.hs
@@ -0,0 +1,15 @@
+import System.Random
+
+isPrime :: Integral a => a -> Bool
+isPrime x = and $ fmap ((/=0).(mod x)) [2..(x-1)]
+
+testn = 10
+
+isPrimeT 2 = True
+isPrimeT x = and $ fmap ((/=0).(fstPow x (x-1))) $ take testn $ randomRs (2,(x-1)) (mkStdGen 100)
+
+fstPow _ 1 x = x
+fstPow m y x
+ | y `mod` 2 == 1 = (x * (fstPow m (y `div` 2) (sqr x))) `mod` m
+ | otherwise = fstPow m (y `div` 2) (sqr x)
+ where sqr a = (a*a) `mod` m
diff --git a/H32.hs b/H32.hs
new file mode 100644
index 0000000..2a0fa88
--- /dev/null
+++ b/H32.hs
@@ -0,0 +1,3 @@
+myGCD :: Integral a => a -> a -> a
+myGCD x 0 = x
+myGCD x y = myGCD y (x `mod` y)
diff --git a/H33.hs b/H33.hs
new file mode 100644
index 0000000..a707db5
--- /dev/null
+++ b/H33.hs
@@ -0,0 +1,3 @@
+coprime :: Integral a => a -> a -> Bool
+coprime x 0 = x == 1
+coprime x y = coprime y (x `mod` y)
diff --git a/H34.hs b/H34.hs
new file mode 100644
index 0000000..6db5e5d
--- /dev/null
+++ b/H34.hs
@@ -0,0 +1,3 @@
+-- http://en.wikipedia.org/wiki/Euler%27s_totient_function
+totient :: Integral a => a -> Bool
+totient x = length $ filter ((==1).(gcd x)) [1..x]
diff --git a/H35.hs b/H35.hs
new file mode 100644
index 0000000..1d96e4e
--- /dev/null
+++ b/H35.hs
@@ -0,0 +1,21 @@
+module H35
+( primeFactors
+) where
+
+primeSift (x:xs) = (x:) $ primeSift $ filter ((/=0).(`mod` x)) xs
+
+primes = primeSift [2..]
+
+primeFactors x = pF x primes
+ where
+ pF a xxs@(x:xs)
+ | a == 1 = []
+ | a `mod` x == 0 = x:(pF (div a x) xxs)
+ | otherwise = pF a xs
+
+factor :: Integer -> [Integer]
+
+factor 1 = []
+factor n =
+ let prime = head $ dropWhile ((/= 0) . mod n) [2 .. n]
+ in (prime :) $ factor $ div n prime
diff --git a/H36.hs b/H36.hs
new file mode 100644
index 0000000..3cd36eb
--- /dev/null
+++ b/H36.hs
@@ -0,0 +1,4 @@
+import H35
+import H10
+
+primeFactorsMult n = encode $ primeFactors n
diff --git a/h4.hs b/H4.hs
index 1aea629..1aea629 100644
--- a/h4.hs
+++ b/H4.hs
diff --git a/h5.hs b/H5.hs
index 720eb9f..720eb9f 100644
--- a/h5.hs
+++ b/H5.hs
diff --git a/h6.hs b/H6.hs
index dc643eb..dc643eb 100644
--- a/h6.hs
+++ b/H6.hs
diff --git a/h7.hs b/H7.hs
index c67b5c5..c67b5c5 100644
--- a/h7.hs
+++ b/H7.hs
diff --git a/h8.hs b/H8.hs
index 219bc93..219bc93 100644
--- a/h8.hs
+++ b/H8.hs
diff --git a/h9.hs b/H9.hs
index b190491..b190491 100644
--- a/h9.hs
+++ b/H9.hs