📅  最后修改于: 2023-12-03 15:10:43.520000             🧑  作者: Mango
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的方法,读者可以根据自己的需要选择其中一种进行使用。对于较大的数字,公式法要比枚举法快得多。