14 lines
320 B
Haskell
14 lines
320 B
Haskell
|
myGCD :: (Integral n) => n -> n -> n
|
||
|
myGCD m n =
|
||
|
if remainder == 0
|
||
|
then abs n
|
||
|
else myGCD n remainder
|
||
|
where
|
||
|
remainder = m `mod` n
|
||
|
|
||
|
coprime :: (Integral n) => n -> n -> Bool
|
||
|
coprime m n = myGCD m n == 1
|
||
|
|
||
|
totient :: (Integral n) => n -> n
|
||
|
totient m = fromIntegral $ length $ filter (coprime m) [1 .. m - 1]
|