Advertisement
Guest User

Untitled

a guest
Jun 16th, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.61 KB | None | 0 0
  1. import Data.List
  2. import Data.Ord
  3.  
  4. isPrime :: Integer -> Bool
  5. primes :: Integer ->[Integer]
  6.  
  7. isLengthLessThan :: Int -> [a] -> Bool
  8. isLengthLessThan 0 _ = False
  9. isLengthLessThan _ [] = True
  10. isLengthLessThan n (_:ys) = isLengthLessThan (n-1) ys
  11.  
  12. isPrime x
  13. | x == 2 = True
  14. | mod x 2 == 0 = False
  15. | otherwise = isLengthLessThan 2 [y | y <- [1,3.. roof], mod x y == 0]
  16. where roof = 1 + truncate (sqrt $fromIntegral x)
  17.  
  18. primes x
  19. | isPrime x = [x]
  20. | otherwise = factor : primes(div x factor)
  21. where factor = head $filter checkdiv [2..]
  22. checkdiv n = x `mod` n == 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement