用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);

以上是 用C ++程序查找LCM 的全部内容, 来源链接: utcz.com/z/331289.html

回到顶部