-- | Module for finding the greatest prime number that is less than or equal to -- a given number module RealDice.Util.Prime (greatestPrimeNotGreaterThan) where import Data.Numbers.Primes (isPrime) -- | Returns the greatest prime number that is not greater than the given number -- | Returns 1 if called with the number 1 -- | Returns 0 if called with a number lower than 1 -- | See RealDice.Generate.RawData for reasons for use in this package -- | ==== __Examples__ -- >>> greatestPrimeNotGreaterThan 10 -- 7 -- >>> greatestPrimeNotGreaterThan 1024 -- 1021 -- >>> greatestPrimeNotGreaterThan 1 -- 1 -- >>> greatestPrimeNotGreaterThan 0 -- 0 -- >>> greatestPrimeNotGreaterThan (-1024) -- 0 greatestPrimeNotGreaterThan :: Int -> Int greatestPrimeNotGreaterThan :: Int -> Int greatestPrimeNotGreaterThan Int n | Int n Int -> Int -> Bool forall a. Ord a => a -> a -> Bool < Int 1 = Int 0 | Int n Int -> Int -> Bool forall a. Eq a => a -> a -> Bool == Int 1 = Int 1 | Int -> Bool forall int. Integral int => int -> Bool isPrime Int n = Int n | Bool otherwise = Int -> Int greatestPrimeNotGreaterThan (Int n Int -> Int -> Int forall a. Num a => a -> a -> a - Int 1)