- Trending Categories
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
Physics
Chemistry
Biology
Mathematics
English
Economics
Psychology
Social Studies
Fashion Studies
Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Haskell Program to Check Whether a Number is Prime or Not
To check whether a given number is prime or not we are going to use mod function and list comprehension method in Haskell.
What is a Prime Number?
A prime number is a positive integer greater than 1 that is only divisible by 1 and itself. In other words, a prime number cannot be written as the product of two smaller positive integers, except for 1 and itself. For example, the first few prime numbers are: 2, 3, 5, 7, 11, 13, 17, 19, 23, and 29.
Algorithm
Step 1 − The isPrime function is defined.
Step 2 − Program execution will be started from main function. The main() function has whole control of the program. It is written as main = do. In the main function, a number is passed to the isPrime function. The result of the function is used to print a message indicating whether the number is prime or not.
Step 3 − The variable named, “n” is being initialized. It will hold the integer which is to be checked if it is prime or not.
Step 4 − The result is printed to the console using ‘putStrLn’ statement after the function is called.
Example 1
In this example, the isPrime function takes an integer n as input and returns a Boolean indicating whether the number is prime or not. The function uses the all function to check if all the numbers from 2 to the floor of the square root of n are not divisors of n. If all of these numbers are not divisors, then n is prime.
isPrime :: Integer -> Bool isPrime n = n > 1 && all (\x -> n `mod` x /= 0) [2 .. floor (sqrt (fromIntegral n))] main :: IO () main = do let n = 7 if n > 0 then if isPrime n then putStrLn "The number is prime." else putStrLn "The number is not prime." else putStrLn "Invalid input. Please enter a positive integer."
Output
The number is prime.
Example 2
In this example, a function isPrime is defined using mod and filter function to check if the passed integer is prime or not.
isPrime :: Int -> Bool isPrime n = n > 1 && (filter (\x -> n `mod` x == 0) [2..n-1] == []) main :: IO () main = do let n = 7 if n > 0 then if isPrime n then putStrLn "The number is prime." else putStrLn "The number is not prime." else putStrLn "Invalid input. Please enter a positive integer."
Output
The number is prime.
Example 3
In this example, for all other cases, we use a list comprehension to check if any number in the range [3, 5, ..., upperBound] divides n evenly. If no such number exists, n is prime, and we return True.
isPrime :: Int -> Bool isPrime n | n <= 1 = False | n == 2 = True | even n = False | otherwise = all (\x -> n `mod` x /= 0) [3,5..upperBound] where upperBound = floor $ sqrt $ fromIntegral n main :: IO () main = do let n = 7 if n > 0 then if isPrime n then putStrLn "The number is prime." else putStrLn "The number is not prime." else putStrLn "Invalid input. Please enter a positive integer."
Output
The number is prime.
Conclusion
In Haskell, we can check if the integer passed to the function is prime or not using mod function along with fromIntegral or filter function, or by using list comprehension.