用c++写出求两个数的最小公倍数
时间: 2024-11-15 08:25:57 浏览: 34
在C++中,我们可以使用欧几里得算法(也称辗转相除法)来计算两个整数的最大公约数(GCD),然后利用公式“两数之积等于最大公约数乘以各自独有的因数”,即`lcm(a, b) = |a * b| / gcd(a, b)` 来计算最小公倍数(LCM)。下面是一个简单的C++函数实现:
```cpp
#include <iostream>
using namespace std;
// 辗转相除法计算最大公约数
int gcd(int a, int b) {
if (b == 0)
return a;
else
return gcd(b, a % b);
}
// 计算最小公倍数
int lcm(int a, int b) {
return abs(a * b) / gcd(a, b);
}
int main() {
int num1, num2;
cout << "请输入两个数字: ";
cin >> num1 >> num2;
int lcm_value = lcm(num1, num2);
cout << "这两个数的最小公倍数是: " << lcm_value << endl;
return 0;
}
```
在这个程序中,用户会先输入两个整数,然后调用`gcd()`函数计算它们的最大公约数,最后用这个结果和原数值来计算最小公倍数。
相关问题
用c++写两个函数 分别求两个整数的最大公约数和最小公倍数
好的,下面是两个函数的实现:
```c++
// 求两个整数的最大公约数
int gcd(int a, int b) {
if (b == 0) {
return a;
} else {
return gcd(b, a % b);
}
}
// 求两个整数的最小公倍数
int lcm(int a, int b) {
int g = gcd(a, b);
return a / g * b;
}
```
以上两个函数都是利用辗转相除法求解的,其中 `gcd` 函数用于求最大公约数,`lcm` 函数用于求最小公倍数。需要注意的是,在求最小公倍数时,先要求出最大公约数。
用c++写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入。并写出注释
// 导入标准输入输出库
#include <stdio.h>
// 定义函数求最大公约数
int gcd(int a, int b) {
int t;
// 辗转相除法求最大公约数
while(b != 0) {
t = a % b;
a = b;
b = t;
}
return a;
}
// 定义函数求最小公倍数
int lcm(int a, int b) {
int t = gcd(a,b);
// 最小公倍数等于两数积除以最大公约数
return a * b / t;
}
// 主函数
int main() {
int num1, num2, max, min;
printf("请输入两个整数:\n");
scanf("%d %d", &num1, &num2);
max = gcd(num1, num2); // 求最大公约数
min = lcm(num1, num2); // 求最小公倍数
printf("%d和%d的最大公约数是%d\n", num1, num2, max);
printf("%d和%d的最小公倍数是%d\n", num1, num2, min);
return 0;
}
// End of Code
阅读全文