Syntax error Haskell Program to Display Prime Numbers Between Intervals Using Function

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: 2023-03-13T15:26:15+05:30

209 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements