使用递归查找两个给定数字的最小公倍数的 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 中,可以使用各种数学算法和递归来计算两个或多个数字的最小公倍数。
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP