欢迎访问宙启技术站
智能推送

使用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

希望以上解答对你有所帮助!