用C ++程序查找LCM

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

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

15 = 5 * 3
9 = 3 * 3

因此,LCM 15和9为45。

查找两个数字的LCM的程序如下-

示例

#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并显示出来。如果不是,则LCM递增直到满足此条件。

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

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

查找两个数字的LCM的另一种方法是使用LCM和GCD公式。此公式指定两个数字的乘积等于其LCM和GCD的乘积。

a * b = GCD * LCM

给出了使用公式查找两个数字的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

在上面的程序中,使用公式找到LCM。首先,使用来获得a和b的GCD gcd()。它是一个递归函数。它具有两个参数,即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);
}

获得GCD后,使用公式计算LCM。然后显示。在下面的代码片段中显示了这一点。

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