使用递归查找两个给定数字的最小公倍数的 Haskell 程序


在 Haskell 中,我们将使用递归以及 gcd 和 max 函数来查找两个给定数字的最小公倍数。在第一个示例中,我们将使用 (gcd) 和 (lcmOfTwoNumbers) 函数,在第二个示例中,我们将使用 (lcm) 和 (lcmOfTwoNumbers a b = lcm a b (max a b)) 函数。

算法

  • 步骤 1 − 导入 Prelude 库以隐藏 gcd 函数。

  • 步骤 2 − 定义两个用户定义函数 - gcd 和 lcmOfTwoNumbers,

  • 步骤 3 − 程序执行将从 main 函数开始。main() 函数控制整个程序。它被写成 main = do。在 main 函数中,变量 a 和 b 分别设置为 15 和 20。然后通过调用 lcmOfTwoNumbers a b 计算这两个数字的最小公倍数,并将结果显示到控制台。

  • 步骤 4 − 初始化名为“a”和“b”的变量。它将保存要计算最小公倍数的数字。

  • 步骤 5 − 在函数调用后,使用“show”函数将给定两个数字的最小公倍数结果打印到控制台。

示例 1

在这个示例中,两个数字 a 和 b 的最小公倍数是使用 gcd 函数计算这两个数字的最大公约数,然后使用该值计算最小公倍数。

import Prelude hiding (gcd)

gcd :: Int -> Int -> Int
gcd a 0 = a
gcd a b = gcd b (a `mod` b)

lcmOfTwoNumbers :: Int -> Int -> Int
lcmOfTwoNumbers a 0 = 0
lcmOfTwoNumbers a b = abs (a * (b `div` (gcd a b)))

main :: IO ()
main = do
   let a = 15
   let b = 20
   putStrLn $ "The LCM of " ++ show a ++ " and " ++ show b ++ " is: " ++ show (lcmOfTwoNumbers a b)

输出

The LCM of 15 and 20 is: 60

示例 2

在这个示例中,两个数字 a 和 b 的最小公倍数是使用 max 和 mod 函数计算,然后打印到控制台。

import Prelude hiding (lcm)
lcm :: Int -> Int -> Int -> Int
lcm a b c
   | c `mod` a == 0 && c `mod` b == 0 = c
   | otherwise = lcm a b (c + 1)

lcmOfTwoNumbers :: Int -> Int -> Int
lcmOfTwoNumbers a b = lcm a b (max a b)

main :: IO ()
main = do
   let a = 15
   let b = 20
   putStrLn $ "The LCM of " ++ show a ++ " and " ++ show b ++ " is: " ++ show (lcmOfTwoNumbers a b)

输出

The LCM of 15 and 20 is: 60

结论

在数学中,两个或多个数字的最小公倍数 (LCM) 是所有这些数字的倍数中最小的正整数。在 Haskell 中,可以使用各种数学算法和递归来计算两个或多个数字的最小公倍数。

更新于: 2023年3月27日

103 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.