🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# C 程序:查找两个数字的 LCM > 原文: [https://www.programiz.com/c-programming/examples/lcm](https://www.programiz.com/c-programming/examples/lcm) #### 在此示例中,您将学习如何计算用户输入的两个数字的 LCM(最小公倍数)。 要理解此示例,您应该了解以下 [C 编程](/c-programming "C tutorial")主题: * [C 编程运算符](/c-programming/c-operators) * [C `if...else`语句](/c-programming/c-if-else-statement) * [C `while`和`do...while`循环](/c-programming/c-do-while-loops) * * * 两个整数`n1`和`n2`的 LCM 是可被`n1`和`n2`完全除尽的最小正整数。 )。 例如,LCM 为 72 和 120 为 360。 * * * ## LCM 使用`while`和`if` ```c #include <stdio.h> int main() { int n1, n2, min; printf("Enter two positive integers: "); scanf("%d %d", &n1, &n2); // maximum number between n1 and n2 is stored in min min = (n1 > n2) ? n1 : n2; while (1) { if (min % n1 == 0 && min % n2 == 0) { printf("The LCM of %d and %d is %d.", n1, n2, min); break; } ++min; } return 0; } ``` **输出** ```c Enter two positive integers: 72 120 The LCM of 72 and 120 is 360. ``` 在该程序中,用户输入的整数分别存储在变量`n1`和`n2`中。 `min`中存储了`n1`和`n2`中最大的数目。 两个数字的 LCM 不能小于`min`。 `while`循环的测试表达式始终为`true`。 在每次迭代中,检查`min`是否可被`n1`和`n2`完全整除。 ```c if (min % n1 == 0 && min % n2 == 0) { ... } ``` 如果此测试条件不成立,则将`min`递增`1`,并且迭代将继续进行,直到`if`语句的测试表达式为`true`。 也可以使用以下公式找到两个数字的 LCM: ```c LCM = (num1*num2)/GCD ``` 了解如何在 C 编程中找到[两个数字的 GCD](https://www.programiz.com/c-programming/examples/hcf-gcd)。 * * * ## 使用 GCD 计算 LCM ```c #include <stdio.h> 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; } ``` **输出** ```c Enter two positive integers: 72 120 The LCM of two numbers 72 and 120 is 360. ```