📜  查找两个数字的LCM的C程序

📅  最后修改于: 2020-10-04 11:31:25             🧑  作者: Mango

在此示例中,您将学习如何计算用户输入的两个数字的LCM(最低公倍数)。

两个整数n1n2的LCM是最小的正整数,可以被n1n2完全整除(没有余数)。例如,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.

在此程序中,用户输入的整数分别存储在变量n1n2中

n1n2中最大的数字存储在max中 。两个数字的LCM不能小于max

while循环的测试表达式始终为true。

在每次迭代中,检查max是否可被n1n2完全整除。

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.