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

📅  最后修改于: 2023-12-03 15:10:43.520000             🧑  作者: Mango

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

简介

LCM,即最小公倍数,是指能够被两个或多个整数共同整除的最小正整数。本篇文章介绍如何使用C语言编写一个程序来查找两个数字的LCM。

实现方法

查找两个数字的LCM有多种方法,这里介绍两种常见的方法。

方法一:暴力枚举

暴力枚举法思路简单,即从两个数字中较大的一个数开始逐个寻找能够被两个数整除的数,找到的第一个即为两个数字的LCM。

具体实现如下:

#include<stdio.h>

int main() {
    int num1, num2, max;

    printf("请输入两个数字,用空格隔开:\n");
    scanf("%d %d", &num1, &num2);

    max = (num1 > num2) ? num1 : num2; // 取两个数字中的较大值

    while(1) {
        if(max % num1 == 0 && max % num2 == 0) {
            printf("%d 和 %d 的LCM为 %d\n", num1, num2, max); 
            break;
        }
        max++;
    }

    return 0;
}
方法二:使用公式

找到两个数字的LCM还可以使用公式进行计算,公式如下:

LCM = (num1 * num2) / gcd(num1, num2)

其中,gcd表示最大公约数。

具体实现如下:

#include<stdio.h>

int gcd(int num1, int num2); // 声明函数

int main() {
    int num1, num2, LCM;

    printf("请输入两个数字,用空格隔开:\n");
    scanf("%d %d", &num1, &num2);

    LCM = (num1 * num2) / gcd(num1, num2); // 计算LCM

    printf("%d 和 %d 的LCM为 %d\n", num1, num2, LCM); 

    return 0;
}

int gcd(int num1, int num2) { // 计算最大公约数
    if(num1 % num2 == 0) {
        return num2;
    } else {
        return gcd(num2, num1 % num2);
    }
}
总结

以上介绍了两种查找两个数字的LCM的方法,读者可以根据自己的需要选择其中一种进行使用。对于较大的数字,公式法要比枚举法快得多。