使用库函数查找最小公倍数的Haskell程序


在Haskell中,我们可以使用GCD函数来查找给定数字的最小公倍数。在第一个例子中,我们将使用(a * b) `div` (gcd a b)函数,在第二个例子中,我们将使用foldl' (\x y -> (x*y) `div` (gcd x y))函数。在第三个例子中,我们将使用gcd' b (a `mod` b)函数。

算法

  • 步骤1 − 最小公倍数函数使用最大公约数函数定义为:lcm a b = (a * b) `div` (gcd a b)。

  • 步骤2 − 程序执行将从main函数开始。main()函数控制整个程序。它写成main = do。它调用带有值的lcm函数并打印两个数的最小公倍数。

  • 步骤3 − 变量“a”和“b”被初始化。它将保存要查找最小公倍数的两个值。

  • 步骤4 − 函数调用后,使用‘putStrLn’语句将结果的最小公倍数值打印到控制台。

示例1

在这个例子中,我们将看到如何找到给定数字的最小公倍数。这可以通过使用gcd函数来完成。

import Prelude

lcm :: Integral a => a -> a -> a
lcm a b = (a * b) `div` (gcd a b)

main :: IO ()
main = do
   let a = 4
   let b = 5
   let lcmVal = Prelude.lcm a b
   putStrLn $ "The LCM of " ++ show a ++ " and " ++ show b ++ " is: " ++ show lcmVal

输出

The LCM of 4 and 5 is: 20

示例2

在这个例子中,我们将看到如何找到给定数字的最小公倍数。这可以通过使用gcd函数和foldl函数来完成。此示例使用foldl函数迭代整数列表,并计算列表中元素的最小公倍数。

import Data.List (foldl')

lcm'' :: Integral a => [a] -> a
lcm'' = foldl' (\x y -> (x*y) `div` (gcd x y)) 1

main :: IO ()
main = do
   let a = 4
   let b = 5
   let lcmVal = Prelude.lcm a b
   putStrLn $ "The LCM of " ++ show a ++ " and " ++ show b ++ " is: " ++ show lcmVal

输出

The LCM of 4 and 5 is: 20

示例3

在这个例子中,我们将看到如何找到给定数字的最小公倍数。这可以通过使用gcd函数和foldl1函数来完成。此示例使用foldl1函数,该函数使用列表的第一个元素作为初始累加器值,来迭代整数列表,并计算列表中元素的最小公倍数。

import Data.List (foldl1')

lcm''' :: Integral a => [a] -> a
lcm''' = foldl1' (\x y -> (x*y) `div` (gcd x y))

main :: IO ()
main = do
   let a = 4
   let b = 5
   let lcmVal = Prelude.lcm a b
   putStrLn $ "The LCM of " ++ show a ++ " and " ++ show b ++ " is: " ++ show lcmVal

输出

The LCM of 4 and 5 is: 20

示例4

在这个例子中,我们将看到如何找到给定数字的最小公倍数。这可以通过递归使用gcd函数来完成。此示例使用递归查找两个数字的最大公约数,然后使用公式LCM(a,b) = (a*b)/GCD(a,b)来查找两个数字的最小公倍数。

lcm' :: Integral a => a -> a -> a
lcm' a b = (a * b) `div` (gcd' a b)
   where gcd' a 0 = a
         gcd' a b = gcd' b (a `mod` b)

main :: IO ()
main = do
       let a = 4
       let b = 5
       let lcmVal = Prelude.lcm a b
       putStrLn $ "The LCM of " ++ show a ++ " and " ++ show b ++ " is: " ++ show lcmVal

输出

The LCM of 4 and 5 is: 20

结论

在Haskell中,Prelude库中没有内置函数来查找两个数字的最小公倍数,但是我们可以使用Prelude库中的gcd函数来查找两个数字的最大公约数,然后用它来查找最小公倍数。为了找到给定数字的最小公倍数,我们可以使用gcd函数以及Haskell中的foldl或foldl1函数。它也可以通过递归使用gcd函数获得。

更新于:2023年3月13日

91 次浏览

启动你的职业生涯

完成课程获得认证

开始
广告