C语言输入两个正整数求出它们最大公约数最小公倍数
时间: 2024-11-03 20:19:57 浏览: 33
c代码-输入两个正整数m和n,求其最大公约数和最小公倍数。
在C语言中,计算两个正整数的最大公约数(Greatest Common Divisor,GCD)和最小公倍数(Least Common Multiple,LCM)通常可以使用欧几里得算法(Euclidean Algorithm)和公式法来完成。以下是简单的步骤:
1. **求最大公约数(GCD)**:
- 使用辗转相除法(也叫欧几里得算法):
```c
int gcd(int a, int b) {
if (b == 0)
return a;
else
return gcd(b, a % b);
}
```
- 输入两个数 `num1` 和 `num2`,然后调用 `gcd(num1, num2)`。
2. **求最小公倍数(LCM)**:
- LCM可以通过 GCD 计算得到,公式是:`LCM(a, b) = |a * b| / GCD(a, b)`
- 先计算两数乘积的一半,再除以 GCD,因为如果一个数能同时整除两个数,则一定能整除它们的乘积,所以先取一半简化计算:
```c
int lcm(int a, int b) {
int temp = a * b;
return temp / gcd(a, b);
}
```
```c
#include <stdio.h>
int main() {
int num1, num2;
printf("请输入两个正整数:");
scanf("%d %d", &num1, &num2);
// 计算并输出最大公约数
int gcd_val = gcd(num1, num2);
printf("最大公约数: %d\n", gcd_val);
// 计算并输出最小公倍数
int lcm_val = lcm(num1, num2);
printf("最小公倍数: %d\n", lcm_val);
return 0;
}
// 辗转相除法实现 GCD 函数
int gcd(int a, int b) {
// 如果 b 等于 0,返回 a 作为结果
if (b == 0)
return a;
else
return gcd(b, a % b);
}
```
阅读全文