C++
求最大公约数(GCD)的方法详解
最大公约数(Greatest Common
Divisor,GCD)是指能够整除两个或多个整数的最大正整数。以下是几种在C++中求最大公约数的方法:
1. 辗转相除法(欧几里得算法)
这是最经典高效的求 GCD 算法,基于以下原理: \[
gcd(a, b) = gcd(b, a \% b)
\]
#include <iostream>
int gcd_recursive(int a, int b) { if (b == 0) return a; return gcd_recursive(b, a % b); }
int gcd_iterative(int a, int b) { while (b != 0) { int temp = b; b = a % b; a = temp; } return a; }
int main() { int num1, num2; std::cout << "请输入两个整数: "; std::cin >> num1 >> num2; std::cout << "递归法GCD: " << gcd_recursive(num1, num2) << std::endl; std::cout << "迭代法GCD: " << gcd_iterative(num1, num2) << std::endl; return 0; }
|
2.
使用STL中的gcd
函数(C++17及以上)
C++17在<numeric>
头文件中提供了内置的gcd函数:
#include <iostream> #include <numeric>
int main() { int num1, num2; std::cout << "请输入两个整数: "; std::cin >> num1 >> num2; std::cout << "STL内置GCD: " << std::gcd(num1, num2) << std::endl; return 0; }
|