6-1 最大公约数(循环) 分数 10 作者 李祥 单位 湖北经济学院 请编写函数,求两个自然数的最大公约数。 函数原型 int Gcd(int x, int y); 说明:参数 x、y 为自然数。
时间: 2024-12-04 08:29:32 浏览: 33
实现两个数互换的六种方法
6-1 最大公约数(也称为最大公因数)通常通过欧几里得算法(Euclidean Algorithm),又称为辗转相除法来计算。这种方法基于一个简单的数学原理:对于任意两个整数a和b(其中a>b),它们的最大公约数等于a除以b的余数c和b之间的最大公约数。如果b为零,则a就是最大公约数。
以下是使用循环(迭代)实现的 `Gcd` 函数的示例,它采用递归的方式进行优化:
```cpp
// C++代码实现
#include <iostream>
// 函数原型
int Gcd(int x, int y);
// 计算最大公约数
int Gcd(int a, int b) {
while (b != 0) {
int temp = b;
b = a % b; // 更新b为余数
a = temp; // 更新a为原来的b值
}
return a; // 返回最后的b,即为最大公约数
}
int main() {
int num1 = 10;
int num2 = 15;
int result = Gcd(num1, num2);
std::cout << "The greatest common divisor of " << num1 << " and " << num2 << " is: " << result << std::endl;
return 0;
}
```
在这个例子中,`Gcd` 函数会持续更新`a`和`b`的值,直到`b`变为0,此时`a`就是两数的最大公约数。
阅读全文