C++ 中计算 LCM 的内置函数

2024 年 8 月 29 日 | 4 分钟阅读

在本文中,我们将讨论 C++ 中用于计算最小公倍数 (LCM) 的内置函数及其语法和方法。

在编程时,我们经常需要确定两个数字之间的最小公倍数 (LCM)。我们可以直接使用 boost::math::lcm(),它是 C++ boost 库的一个固有函数,而不是创建和使用方法来计算 LCM。我们必须定义一个头文件才能使用此方法。

语法

它具有以下语法:

参数: m, n

返回值:0 如果 m 或 n 为零,否则返回 mod(m)mod(n) 的最小公倍数。

程序

让我们举个例子,使用 C++ 中的 std::lcm() 方法来查找最小公倍数。

输出

LCM(15, 25) = 75

要点

该函数在计算 LCM 之前会取两个整数的模数;因此,如果其中任何一个数字是负数,它们会先转换为它们的模数,然后再计算 LCM。

如果任何数字是非整数数据类型,boost::math::lcm() 函数将抛出错误。

程序

让我们举个例子,使用 C++ 中的 boost::math::lcm() 方法来查找最小公倍数。

由于函数的一个参数是 double 类型,此代码将失败并抛出错误。

使用 std::lcm()

C++17 中添加了一个新的 STL 方法 std::lcm(),它可以与支持 C++17 功能的任何编译器一起使用,以计算两个值的最小公倍数。

语法

它具有以下语法:

参数: m, n

返回: 如果 m 或 n 为 0,则返回 0

否则,返回 mod(m) 和 mod(n) 的最小公倍数

程序

让我们举个例子,使用 C++ 中的 std::lcm() 方法来查找最小公倍数。

输出

LCM(18, 24) = 72

关键点

  • 此函数只接受正数作为输入;负数输入会先转换为它们的模数,然后再计算 LCM。
  • 此外,它只能处理整数数据类型;如果提供了其他数据类型(例如 char 或 double)作为输入,将引发错误。

C++ 中有一些常用的计算最小公倍数的函数

方法 1:使用 for 循环查找两个数字的 GCD 和 LCM

在下面的示例中,变量 I 使用 for 循环从 0 迭代到较小的值。如果两个数字都可被 i 整除,则最终获得两个整数的 GCD。否则,GCD 会被修改。接下来,使用两个数字的 GCD 计算两个数字的 LCM。

程序

输出

LCM of 30 and 45 is: 90

方法 2:使用 while 循环查找两个数字的 GCD 和 LCM

在下面的示例中,较大的数字被一个通过从较大数字中减去较小数字获得的值替换。重复该过程,直到两个数字相等,此时获得两个数字的 GCD。接下来,使用两个数字的 GCD 计算两个数字的 LCM。

程序

输出

LCM of 30 and 45 is: 90