diff options
author | Joe Zhao <ztuowen@gmail.com> | 2015-03-31 23:41:55 +0800 |
---|---|---|
committer | Joe Zhao <ztuowen@gmail.com> | 2015-03-31 23:41:55 +0800 |
commit | a9abc1da41b56edbed00081800382e854d6698d0 (patch) | |
tree | 5265cc1c5296768438b67299afd59bcc57c58f0c | |
parent | 378f6303e8860b7bbca7dea787d584a6728cebf1 (diff) | |
download | h99-a9abc1da41b56edbed00081800382e854d6698d0.tar.gz h99-a9abc1da41b56edbed00081800382e854d6698d0.tar.bz2 h99-a9abc1da41b56edbed00081800382e854d6698d0.zip |
rename to H**, +31 +32 +33 +34 +35 +36
-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.hs | 15 | ||||
-rw-r--r-- | H32.hs | 3 | ||||
-rw-r--r-- | H33.hs | 3 | ||||
-rw-r--r-- | H34.hs | 3 | ||||
-rw-r--r-- | H35.hs | 21 | ||||
-rw-r--r-- | H36.hs | 4 | ||||
-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
@@ -1,3 +1,7 @@ +module H10 +( encode +) where + import Control.Applicative import Control.Arrow import Data.List @@ -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 @@ -0,0 +1,3 @@ +myGCD :: Integral a => a -> a -> a +myGCD x 0 = x +myGCD x y = myGCD y (x `mod` y) @@ -0,0 +1,3 @@ +coprime :: Integral a => a -> a -> Bool +coprime x 0 = x == 1 +coprime x y = coprime y (x `mod` y) @@ -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] @@ -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 @@ -0,0 +1,4 @@ +import H35 +import H10 + +primeFactorsMult n = encode $ primeFactors n |