使用Haskell编写一个函数,判断一个数值是否为质数。
发布时间:2023-12-10 01:17:25
要判断一个数值是否为质数,首先我们需要了解什么是质数。质数又称素数,是指大于1的自然数中,除了1和该数本身外,没有其他的因数。所以,我们可以通过找到该数的因数来判断它是否为质数。
首先,我们可以定义一个辅助函数isDivisibleBy,用来判断一个数是否能被另一个数整除。接下来,我们可以定义一个函数isPrime,利用辅助函数isDivisibleBy来判断一个数是否为质数。
下面是使用Haskell编写的代码:
isDivisibleBy :: Int -> Int -> Bool isDivisibleBy n x = n mod x == 0 isPrime :: Int -> Bool isPrime n | n <= 1 = False -- 质数必须大于1 | otherwise = not $ any (isDivisibleBy n) [2..(n div 2)] main :: IO () main = do putStrLn "Enter a number:" input <- getLine let n = read input :: Int let result = if isPrime n then "is prime" else "is not prime" putStrLn $ input ++ " " ++ result
在上面的代码中,isPrime函数首先判断输入是否小于等于1,如果是则返回False,因为质数必须大于1。否则,它遍历从2到该数的一半的所有数,利用isDivisibleBy函数判断是否能被这些数整除。如果存在可以整除的数,则返回True,表示不是质数;否则返回False,表示是质数。
最后,我们在main函数中读取输入的数值,并调用isPrime函数判断是否为质数。输出结果为"是质数"或"不是质数"。
以下是使用例子:
输入:
Enter a number: 7
输出:
7 is prime
输入:
Enter a number: 12
输出:
12 is not prime
输入:
Enter a number: 1
输出:
1 is not prime
输入:
Enter a number: 0
输出:
0 is not prime
希望以上解答对你有所帮助!
