两个整数n1和n2的LCM是最小的正整数,可以被n1和n2完全整除(没有余数)。例如,LCM为72和120为360。
LCM使用while和if
#include
int main() {
int n1, n2, max;
printf("Enter two positive integers: ");
scanf("%d %d", &n1, &n2);
// maximum number between n1 and n2 is stored in min
max = (n1 > n2) ? n1 : n2;
while (1) {
if (max % n1 == 0 && max % n2 == 0) {
printf("The LCM of %d and %d is %d.", n1, n2, max);
break;
}
++max;
}
return 0;
}
输出
Enter two positive integers: 72
120
The LCM of 72 and 120 is 360.
在此程序中,用户输入的整数分别存储在变量n1和n2中 。
n1和n2中最大的数字存储在max中 。两个数字的LCM不能小于max 。
while
循环的测试表达式始终为true。
在每次迭代中,检查max是否可被n1和n2完全整除。
if (min % n1 == 0 && max% n2 == 0) { ... }
如果此测试条件不成立,则max递增1
,并且迭代将继续,直到if
语句的测试表达式为true。
也可以使用以下公式找到两个数字的LCM:
LCM = (num1*num2)/GCD
了解如何在C编程中找到两个数字的GCD。
使用GCD计算LCM
#include
int main() {
int n1, n2, i, gcd, lcm;
printf("Enter two positive integers: ");
scanf("%d %d", &n1, &n2);
for (i = 1; i <= n1 && i <= n2; ++i) {
// check if i is a factor of both integers
if (n1 % i == 0 && n2 % i == 0)
gcd = i;
}
lcm = (n1 * n2) / gcd;
printf("The LCM of two numbers %d and %d is %d.", n1, n2, lcm);
return 0;
}
输出
Enter two positive integers: 72
120
The LCM of two numbers 72 and 120 is 360.