C++程序查找最小公倍数


两个数的最小公倍数 (LCM) 是这两个数的倍数中最小的数。

例如:假设我们有以下两个数:15 和 9。

15 = 5 * 3
9 = 3 * 3

因此,15 和 9 的最小公倍数是 45。

查找两个数的最小公倍数的程序如下所示:

示例

 在线演示

#include <iostream>
using namespace std;
int main() {
   int a=7, b=5, lcm;
   if(a>b)
   lcm = a;
   else
   lcm = b;
   while(1) {
      if( lcm%a==0 && lcm%b==0 ) {
         cout<<"The LCM of "<<a<<" and "<<b<<" is "<<lcm;
         break;
      }
      lcm++;
   }
   return 0;
}

输出

The LCM of 7 and 5 is 35

在上述程序中,变量 lcm 设置为两个数中较大的一个。这通过以下代码片段演示。

if(a>b)
lcm = a;
else
lcm = b;

此后,while循环运行。在这个循环中,如果 LCM 既能被 a 也能被 b 整除,那么它就是这两个数的最小公倍数,并显示出来。如果不是,则递增 LCM 直到满足此条件。

解释这一点的代码片段如下:

while(1) {
   if( lcm%a==0 && lcm%b==0 ) {
      cout<<"The LCM of "<<a<<" and "<<b<<" is "<<lcm;
      break;
   }
   lcm++;
}

另一种查找两个数的最小公倍数的方法是使用最小公倍数和最大公约数公式。这个公式规定两个数的乘积等于它们的最小公倍数和最大公约数的乘积。

a * b = GCD * LCM

使用该公式查找两个数的最小公倍数的程序如下所示:

示例

 在线演示

#include<iostream>
using namespace std;
int gcd(int a, int b) {
   if (b == 0)
   return a;
   return gcd(b, a % b);
}
int main() {
   int a = 7, b = 5;
   cout<<"LCM of "<< a <<" and "<< b <<" is "<< (a*b)/gcd(a, b);
   return 0;
}

输出

LCM of 7 and 5 is 35

在上述程序中,最小公倍数是使用公式计算的。首先,使用 gcd() 获取 a 和 b 的最大公约数。这是一个递归函数。它有两个参数,即 a 和 b。如果 b 大于 0,则将 a 返回到 main() 函数。否则,gcd() 函数将使用值 b 和 a%b 递归调用自身。

这通过以下代码片段演示。

int gcd(int a, int b) {
   if (b == 0)
   return a;
   return gcd(b, a % b);
}

获得最大公约数后,使用公式计算最小公倍数。然后显示出来。这在以下代码片段中显示。

cout<<"LCM of "<< a <<" and "<< b <<" is "<< (a*b)/gcd(a, b);

更新于:2020年6月24日

浏览量:1万+

启动您的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.