Haskell程序 计算最小公倍数

Haskell程序 计算最小公倍数

本教程将帮助我们在Haskell编程中计算最低公倍数。最小公倍数(LCM)是两个或多个整数的最小正整数的倍数。它可以通过列出每个数字的倍数,并找到所有这些数字共同的最小倍数来找到。例如,4和6的LCM是12,因为12是4和6的最小的倍数。

方法1:使用用户定义的lcm’函数

在这种方法中,使用Data.List库中的gcd函数来计算两个整数的最大公除数(GCD),然后用这个值来计算LCM,即取两个整数的乘积的绝对值除以GCD。

算法

  • 第1步– 导入Data.List模块以使用gcd函数。

  • 第2步 – 用户定义的lcm’函数使用gcd函数定义为:lcm’ a b = abs (a * b) div (gcd a b)。计算两个整数的最大公除数(GCD),然后用这个值来计算LCM,即取两个整数的乘积的绝对值除以GCD。

  • 第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

结论

在Haskell中传递的数字的最小公倍数可以通过使用用户定义的lcm’函数,使用foldl1函数或使用div函数来计算。在调用定义的函数时,使用’print’函数将结果打印到控制台。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程