C语言用筛选法求最两个数的小公倍数
时间: 2023-05-30 17:02:46 浏览: 114
以下是C语言的代码,使用筛选法求最两个数的小公倍数:
```c
#include <stdio.h>
int main() {
int a, b, max, lcm;
printf("请输入两个正整数:");
scanf("%d%d", &a, &b);
// 找出a和b的最大值
max = a > b ? a : b;
// 筛选法求最小公倍数
while (1) {
if (max % a == 0 && max % b == 0) {
lcm = max;
break;
}
max++;
}
printf("%d和%d的最小公倍数为%d", a, b, lcm);
return 0;
}
```
首先输入两个正整数,然后找出它们中的最大值,将最大值作为起始值,从起始值开始不断加1,直到找到能同时被a和b整除的数,此时找到了最小公倍数。最后输出a、b和它们的最小公倍数。
相关问题
c语言中怎么求两个数的最小公倍数 夸克AI · 可以为你开启 文档搜索 筛选结果类型 全部 资讯 图片 笔记 视频 文档 购物 已开启夸克AI增强模式
在C语言中,计算两个整数的最小公倍数(LCM)通常可以采用以下几种方法:
1. **短除法** (Euclidean algorithm): 使用辗转相除法,即大数除以小数得到余数,然后用原来的小数去除这个余数,如此反复,直到余数为0。最后,较小的数就是两数的最大公约数(GCD),而LCM等于两数的乘积除以GCD。
```c
#include <stdio.h>
// 计算最大公约数(GCD)
int gcd(int a, int b) {
if (b == 0)
return a;
return gcd(b, a % b);
}
// 计算最小公倍数(LCM)
int lcm(int a, int b) {
return (a * b) / gcd(a, b);
}
int main() {
int num1, num2;
printf("请输入两个数字: ");
scanf("%d %d", &num1, &num2);
printf("它们的最小公倍数是: %d\n", lcm(num1, num2));
return 0;
}
```
2. **循环法**: 如果不想使用递归,也可以通过循环不断更新较大的数,每次更新都用它去除两数的乘积,直到两者成倍数关系为止。
另一种更高效的方法是利用数学性质,如果a能被b整除,则LCM(a,b) = a;否则LCM(a,b) = a*b / GCD(a,b),这种方法在实际编程中更为常见。
阅读全文