两个数字的最小公倍数(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);