用c程序设计谭浩强中的知识,输入两个正整数最小公倍数
时间: 2025-06-26 14:10:47 浏览: 10
在《C程序设计语言》(谭浩强版)的学习过程中,我们可以利用一些基本的知识点来计算两个正整数的最小公倍数。以下是解决该问题的基本步骤:
### 计算思路
1. **最大公约数**:首先需要找到这两个正整数的最大公约数。可以使用辗转相除法(欧几里得算法),这是一个非常高效的求解方法。
2. **公式关系**:已知两数乘积等于它们的最大公约数与最小公倍数的乘积,即 `a * b = 最大公约数 × 最小公倍数` 。因此可以通过以下公式得到最小公倍数:
\[
最小公倍数 = (a \times b) / 最大公约数
\]
### C代码示例
```c
#include <stdio.h>
// 求最大公约数函数(采用辗转相除法)
int gcd(int a, int b) {
while (b != 0) { // 当余数不为零时继续循环
int temp = a % b;
a = b;
b = temp;
}
return a; // 返回最大公约数
}
// 主函数
int main() {
int num1, num2;
printf("请输入两个正整数: ");
scanf("%d%d", &num1, &num2);
if (num1 <= 0 || num2 <= 0) {
printf("输入错误,请确保您输入的是正整数。\n");
return -1;
}
int max_gcd = gcd(num1, num2); // 调用gcd函数获取最大公约数
int lcm = (num1 * num2) / max_gcd; // 根据公式计算最小公倍数
printf("两个数的最小公倍数是:%d\n", lcm);
return 0;
}
```
---
#### 解释关键部分:
- **辗转相除法原理**:假设我们有两个数 \(a\) 和 \(b\) (\(a > b\))。通过不断取模运算将较大的数缩小,直到其中一个数字变为零为止,此时另一个非零值就是最大公约数。
例如:
对于 \(48\) 和 \(18\),
\[
48 \% 18 = 12 \\
18 \% 12 = 6 \\
12 \% 6 = 0
\]
所以他们的最大公约数为 \(6\) ,然后按照上述提到的关系式得出其最小公倍数。
---
阅读全文
相关推荐














