想来这个大家应该都知道,是计算最大公约数的算法,也叫欧几里德算法
所以这里就不多说了
递归实现
int gcd(int a, int b)
{
if (a < b)
std::swap(a, b);
return b == 0 ? a : gcd(b, a % b);
}
循环实现
int gcd(int a, int b)
{
int res;
while(b > 0)
{
res = a % b;
a = b;
b = res;
}
return a;
}
PS:循环还是快一点…