module Autolib.Prime where
prime :: Integer -> Bool
prime :: Integer -> Bool
prime Integer
n | Integer
n Integer -> Integer -> Bool
forall a. Ord a => a -> a -> Bool
< Integer
2 = Bool
False
prime Integer
n = (Integer -> Bool) -> [Integer] -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
all ( \ Integer
t -> Integer
0 Integer -> Integer -> Bool
forall a. Eq a => a -> a -> Bool
/= Integer -> Integer -> Integer
forall a. Integral a => a -> a -> a
mod Integer
n Integer
t )
[ Integer
2 .. Double -> Integer
forall b. Integral b => Double -> b
forall a b. (RealFrac a, Integral b) => a -> b
truncate (Double -> Integer) -> Double -> Integer
forall a b. (a -> b) -> a -> b
$ Double -> Double
forall a. Floating a => a -> a
sqrt ( Integer -> Double
forall a b. (Integral a, Num b) => a -> b
fromIntegral Integer
n :: Double ) ]