马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
在C++中实现更相减损术也很直接。下面是一个简单的C++函数,用于计算两个整数的最大公约数(GCD): cpp复制代码
| #include <iostream> |
| |
| int gcd_subtraction(int a, int b) { |
| // 确保a是较大的数 |
| if (a < b) { |
| std::swap(a, b); |
| } |
| |
| // 循环直到a和b相等 |
| while (a != b) { |
| if (a > b) { |
| a -= b; |
| } else { |
| b -= a; |
| } |
| } |
| |
| // 返回最大公约数 |
| return a; |
| } |
| |
| int main() { |
| int num1 = 84; |
| int num2 = 56; |
| int result = gcd_subtraction(num1, num2); |
| std::cout << "The greatest common divisor of " << num1 << " and " << num2 << " is: " << result << std::endl; |
| return 0; |
| } |
这段代码定义了一个gcd_subtraction函数,它接受两个整数a和b作为参数,并返回它们的最大公约数。在main函数中,我们调用了这个函数,并打印了结果。 请注意,这个函数假设输入的a和b都是正整数。如果输入的数可能包括负数或零,你需要在函数中添加适当的错误检查和处理逻辑。 同样地,虽然更相减损术在原理上是可行的,但在实际应用中,欧几里得算法(辗转相除法)通常更加高效。以下是使用欧几里得算法的C++实现: cpp复制代码
| #include <iostream> |
| |
| int gcd_euclidean(int a, int b) { |
| while (b != 0) { |
| int temp = b; |
| b = a % b; |
| a = temp; |
| } |
| return a; |
| } |
| |
| int main() { |
| int num1 = 84; |
| int num2 = 56; |
| int result = gcd_euclidean(num1, num2); |
| std::cout << "The greatest common divisor of " << num1 << " and " << num2 << " is: " << result << std::endl; |
| return 0; |
| } |
在这个实现中,我们使用了一个while循环来重复执行取余操作,直到余数为0。此时,除数(保存在变量a中)就是最大公约数。
|