用c++将三个整数变为最简并输出
时间: 2024-12-25 11:25:38 浏览: 4
在C++中,我们可以使用欧几里得算法(辗转相除法)来求两个数的最大公约数,然后利用这个方法将三个整数转为它们之间的最简分数。这里给出一个简单的示例:
```cpp
#include <iostream>
#include <vector>
// 求最大公约数
int gcd(int a, int b) {
if (b == 0)
return a;
else
return gcd(b, a % b);
}
// 用于存储结果
std::pair<int, int> convert_to_fraction(int numerator, int denominator) {
return {numerator, denominator};
}
// 主函数
void convert_and_output(int num1, int num2, int num3) {
int lcm = num1; // 初始化最小公倍数为第一个数
for (int i = 1; i <= 2; ++i) { // 遍历剩余的两个数
lcm *= num2 + num3;
lcm /= gcd(lcm, num2 + num3); // 更新最小公倍数
}
std::vector<std::pair<int, int>> fractions({{num1, lcm}, {num2, lcm}, {num3, lcm}});
// 对每个分数简化
for(auto& pair : fractions) {
int commonDivisor = gcd(pair.first, pair.second);
pair.first /= commonDivisor;
pair.second /= commonDivisor;
}
// 输出最简分数
for(const auto &fraction : fractions) {
std::cout << "Number " << fraction.first << "/" << fraction.second << " in its simplest form." << std::endl;
}
}
int main() {
int numbers[] = {5, 7, 15};
convert_and_output(numbers[0], numbers[1], numbers[2]);
return 0;
}
```
在这个例子中,我们首先计算出三个数的最小公倍数(LCM),然后将每个数转换为其对应的小数部分,最后对每一对(分子和分母)求最大公约数并除掉,得到最简形式。
阅读全文