用于计算最小公倍数的 Haskell 程序
本教程将帮助我们在 Haskell 编程中计算最小公倍数。最小公倍数 (LCM) 是两个或多个整数的倍数的最小正整数。可以通过列出每个数字的倍数并找到所有数字共有的最小倍数来找到它。例如,4 和 6 的最小公倍数是 12,因为 12 是 4 和 6 的倍数中最小的一个。
方法 1:使用用户定义的 lcm' 函数
在此方法中,使用 Data.List 库中的 gcd 函数计算两个整数的最大公约数 (GCD),然后使用该值通过取两个整数乘积的绝对值并将其除以 GCD 来计算 LCM。
算法
步骤 1 - 导入 Data.List 模块以使用 gcd 函数。
步骤 2 - 使用 gcd 函数将用户定义的 lcm' 函数定义为,lcm' a b = abs (a * b) `div` (gcd a b)。计算两个整数的最大公约数 (GCD),然后通过取两个整数乘积的绝对值并将其除以 GCD,使用该值计算 LCM。
步骤 3 - 程序执行将从主函数开始。main() 函数完全控制程序。它写为 main = do。它以两个整数作为输入并打印 lcm' 函数的输出。
步骤 4 - 初始化名为"x"的变量。它将调用 lcm' 函数并将两个整数作为参数传递给此函数。
步骤 5 - 使用"print"函数将结果打印到控制台。
示例
在此示例中,我们将了解如何计算最小公倍数。这可以通过使用用户定义的 lcm 函数来实现。
import Data.List import Text.Printf lcm' :: Integer -> Integer -> Integer lcm' a b = abs (a * b) `div` (gcd a b) main = do let a = 15 let b = 20 let x = lcm' a b printf"LCM of %d and %d is:" a b print x
输出
LCM of 15 and 20 is:60
方法 2:使用 div 函数
在此方法中,lcm 函数接受两个整数作为参数,并使用公式 (a * b) div (gcd a b) 计算它们的 LCM。
算法
步骤 1 - 使用 div 和 gcd 函数将 lcm 函数定义为,lcm a b = (a * b) `div` (gcd a b)。
步骤 2 - 程序执行将从主函数开始。main() 函数完全控制程序。它写为 main = do。它接受两个整数作为输入并打印 lcm 函数的输出。
步骤 3 - 名为"x"的变量正在初始化。它将调用 Prelude 模块中的 lcm 函数,该函数是 Prelude 库中的内置函数,并将两个整数作为参数传递给此函数。
步骤 4 - 使用"print"函数将结果打印到控制台。
示例
在此示例中,我们将了解如何计算最小公倍数。这可以通过使用 div 函数来完成。
lcm :: Integer -> Integer -> Integer lcm a b = (a * b) `div` (gcd a b) main = do let x = Prelude.lcm 15 20 print x
输出
60
方法 3:使用 foldl1 函数
在此方法中,整数列表被传递给 lcmFold 函数,该函数使用 foldl1 函数将 lcm 函数重复应用于列表的元素,从前两个元素开始,然后继续处理结果和下一个元素,直到处理完整个列表。
算法
步骤 1 - 导入 Data.List 模块。
步骤 2 - 使用 foldl1 将 lcmFold 函数定义为列表元素,lcmFold = foldl1 lcm。结果作为最小公倍数返回。
步骤 3 - 程序执行将从 main 函数开始。main() 函数完全控制程序。它写为 main = do。它以整数列表作为输入并打印定义的 lcmFold 函数的输出。
步骤 4 - 初始化名为"x"的变量以调用 lcmFold 函数并将整数列表传递给它。
步骤 5 - 使用"print"函数将结果打印到控制台。
示例
在此示例中,我们将看到如何计算最小公倍数。这可以通过使用 foldl1 函数来完成。
import Data.List lcmFold :: [Integer] -> Integer lcmFold = foldl1 lcm main = do let x = lcmFold [15, 20] print x
输出
60
结论
可以使用用户定义的 lcm' 函数、foldl1 函数或 div 函数来计算 Haskell 中传递的数字的最小公倍数。调用定义的函数时,使用"print"函数将结果打印到控制台。