Haskell Program to Display Prime Numbers Between Intervals Using Function


In Haskell, we can Display Prime Numbers Between Intervals using user-defined function along with filter function and recursion. In the first example we are going to use user-defined, (isPrime) function with (primeInRange a b = filter isPrime [a..b] ) function and in the second example, we are going to use recursion with base and recursive case.

Algorithm

  • Step 1 − The Data.List library is imported.

  • Step 2 − The user-defined isPrime function is defined as,

  • Step 3 − Program execution will be started from main function. The main() function has whole control of the program. It is written as main = do.

  • Step 4 − The variables named, “lower” and “upper” are being initialized. It will hold the range between which the prime numbers is to be printed.

  • Step 5 − The resultant prime numbers under the defined range is printed to the console using ‘print’ function after the function is called.

Example 1

In this example, we are going to see that how we can display prime numbers between two interval by using user defined functions using filter function.

import Data.List (find)

isPrime :: Integer -> Bool
isPrime n
   | n <= 1 = False
   | n == 2 = True
   | even n = False
   | otherwise = all (\x -> n `mod` x /= 0) [3,5..(n-1)]

primeInRange :: Integer -> Integer -> [Integer]
primeInRange a b = filter isPrime [a..b]

main :: IO ()
main = do
        let lower = 10
            upper = 20
        print (primeInRange lower upper)

Output

[11,13,17,19]

Example 2

In this example, we are going to see that how we can display prime numbers between two interval by using user defined functions using recursion.

import Data.List (find)

isPrime :: Integer -> Bool
isPrime n
   | n < 2 = False
   | n == 2 = True
   | n `mod` 2 == 0 = False
   | otherwise = all (\x -> n `mod` x /= 0) [3,5..(floor . sqrt . fromIntegral $ n)]

primeInRange :: Integer -> Integer -> [Integer]
primeInRange a b
   | a > b = []
   | isPrime a = a : primeInRange (a+1) b
   | otherwise = primeInRange (a+1) b

main :: IO ()
main = do
        let lower = 2
            upper = 30
        print (primeInRange lower upper)

Output

[2,3,5,7,11,13,17,19,23,29]

Conclusion

A prime number is a natural number greater than 1 that cannot be formed by multiplying two smaller natural numbers. In Haskell, to display the prime numbers between intervals we can use user-defined functions using filter function and recursion.

Updated on: 13-Mar-2023

106 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements