在此示例中,您将学习如何计算用户输入的两个数字的LCM(最小公倍数)。
要理解此示例,您应该了解以下C语言编程主题:
两个整数n1和n2的LCM是最小的正整数,可以被n1和n2完全整除(没有余数)。 例如,72和120最小公倍数(LCM)为360。
#include <stdio.h> int main() { int n1, n2, min; printf("输入两个正整数: "); scanf("%d %d", &n1, &n2); //n1和n2之间的最大值存储在min内 min = (n1 > n2) ? n1 : n2; while (1) { if (min % n1 == 0 && min % n2 == 0) { printf("%d和%d的LCM是%d。", n1, n2, min); break; } ++min; } return 0; }
输出结果
输入两个正整数: 72 120 72和120的LCM是360。
在此程序中,用户输入的整数分别存储在变量n1和中n2。
n1和n2的最大值存储在min中,两个数的LCM不能小于min。
while循环的测试表达式始终为真。
在每次迭代中,检查min是否能被n1和n2完全整除。
if (min % n1 == 0 && min % n2 == 0) { ... }
如果这个测试条件不为真,那么min将递增1,并继续迭代,直到If语句的测试表达式为真为止。
也可以使用以下公式找到两个数字的LCM:
LCM = (num1*num2)/GCD
了解如何在C语言编程中找到两个数字的GCD。
#include <stdio.h> int main() { int n1, n2, i, gcd, lcm; printf("输入两个正整数: "); scanf("%d %d", &n1, &n2); for (i = 1; i <= n1 && i <= n2; ++i) { // 检查i是否是两个整数的因数 if (n1 % i == 0 && n2 % i == 0) gcd = i; } lcm = (n1 * n2) / gcd; printf("两个数字%d和%d的LCM为%d。", n1, n2, lcm); return 0; }
输出结果
输入两个正整数: 78 150 两个数字78和150的LCM为1950。