-- test whether a nat. number is a prime prime :: Integer -> Bool prime n = n >= 2 && not (divisible_range n 2 (n - 1)) -- divisible_range x n m tests -- whether x divisible by any k within -- n <= k <= m divisible_range :: Integer -> Integer -> Integer -> Bool divisible_range x n m = if n > m then False else divisible_range x (n+1) m || is_divisible x n is_divisible x n = x `mod` n == 0