编写C++写两个函数,分别求两个整数的最大公约数(用辗转相除法)和最小公倍数,用主函数调用两个函数,并输出结果,两个整数由键盘输入。(自选6组测试数据,输出运行结果。)
时间: 2024-10-19 12:02:33 浏览: 22
在C++中,你可以使用欧几里得算法(也称为辗转相除法)来计算两个整数的最大公约数(GCD),然后利用最大公约数来找到最小公倍数(LCM)。以下是实现这个功能的一个简单示例:
```cpp
#include <iostream>
using namespace std;
// Function to calculate GCD using Euclidean algorithm
int gcd(int a, int b) {
if (b == 0)
return a;
else
return gcd(b, a % b);
}
// Function to calculate LCM using GCD
int lcm(int a, int b) {
return (a * b) / gcd(a, b);
}
// Main function to take input and call the above functions
int main() {
int num1, num2;
cout << "请输入第一个整数: ";
cin >> num1;
cout << "请输入第二个整数: ";
cin >> num2;
// 计算并输出最大公约数
int result_gcd = gcd(num1, num2);
cout << "最大公约数: " << result_gcd << endl;
// 计算并输出最小公倍数
int result_lcm = lcm(num1, num2);
cout << "最小公倍数: " << result_lcm << endl;
// 测试数据(你可以自行替换)
int test_data_1[] = {48, 18};
int test_data_2[] = {15, 25};
int test_data_3[] = {9, 36};
int test_data_4[] = {7, 11};
int test_data_5[] = {12, 16};
int test_data_6[] = {24, 30};
// 输出测试数据的结果
cout << "测试数据 1: " << "gcd(" << test_data_1[0] << ", " << test_data_1[1] << ") = " << gcd(test_data_1[0], test_data_1[1])
<< ", lcm(" << test_data_1[0] << ", " << test_data_1[1] << ") = " << lcm(test_data_1[0], test_data_1[1]) << endl;
// ...以此类推,为其他测试数据打印结果
return 0;
}
```
当你运行此程序时,它会提示用户输入两个整数,然后计算它们的最大公约数和最小公倍数。对于测试数据部分,你可以选择自己的一组数值或直接使用上述提供的数组。
阅读全文