在本教程中,我们将编写一个基于LCM概念的程序。如标题所示,我们必须找到三个小于或等于LCM最大的给定数字的数字。
让我们来看一个例子。
在深入探讨问题之前,让我们看看什么是LCM并为其编写程序。
LCM是数字的最小公倍数。也称为最小公除数。对于两个正数a和b,LCM是可被a和b整除的最小整数。
如果给定的整数不具有公因子,则LCM是给定数字的乘积。
让我们编写程序来查找给定任意两个正数的LCM。
#include <iostream>
using namespace std;
int main() {
int a = 4, b = 5;
int maximum = max(a, b);
while (true) {
if (maximum % a == 0 && maximum % b == 0) {
cout << "LCM: " << maximum << endl;
break;
}
maximum++;
}
}输出结果如果运行上述程序,将得到以下输出。
20
我们已经了解了什么是LCM,并计划找到两个正数的LCM。
让我们看看解决问题的步骤。
如果数字为奇数,则最大LCM的三个数字为n,n-1和n-3。
如果数字为偶数,并且n和n-3的GCM为1,则具有最大LCM的三个数字为n,n-1和n-3。
否则,具有最大LCM的三个数字分别为n-1,n-2和n-3。
让我们看一下代码。
#include <bits/stdc++.h>
using namespace std;
void threeNumbersWithMaxLCM(int n) {
if (n % 2 != 0) {
cout << n << " " << (n - 1) << " " << (n - 2);
}
else if (__gcd(n, (n - 3)) == 1) {
cout << n << " " << (n - 1) << " " << (n - 3);
}
else {
cout << (n - 1) << " " << (n - 2) << " " << (n - 3);
}
cout << endl;
}
int main() {
int n = 18;
threeNumbersWithMaxLCM(n);
return 0;
}输出结果如果执行上述程序,则将得到以下结果。
17 16 15
如果您对本教程有任何疑问,请在评论部分中提及。