Guest User

Untitled

a guest
Nov 20th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.63 KB | None | 0 0
  1. module Math (
  2. fac,
  3. inverseMod,
  4. fib,
  5. isPrime,
  6. nPk,
  7. nCk
  8. ) where
  9.  
  10. fac :: Integral a => a -> a
  11. fac n = foldl (*) 1 [1..n]
  12.  
  13. inverseMod :: Integral a => a -> a -> a
  14. inverseMod q 1 = 1
  15. inverseMod q r = (n * q + 1) `div` r
  16. where n = r - inverseMod r (q `mod` r)
  17.  
  18. fib :: Integral a => a -> a
  19. fib 0 = 0
  20. fib 1 = 1
  21. fib n = fib (n - 2) + fib (n - 1)
  22.  
  23. isPrime :: Integral a => a -> Bool
  24. isPrime x = all (\a -> mod x a /= 0) [2..n]
  25. where n = floor . sqrt . fromIntegral $ x
  26.  
  27. nPk :: Integral a => a -> a -> a
  28. nPk n k = (fac n) `div` (fac $ n - k)
  29.  
  30. nCk :: Integral a => a -> a -> a
  31. nCk n k = div (fac n) $ (fac $ n - k) * (fac k)
Add Comment
Please, Sign In to add comment