欧几里德算法又称辗转相除法,用于计算两个正整数m,n的最大公约数。
非递归实现:
int EuclidGCD(int m, int n)
{
int r;
//cout << "r\tm\tn" << endl;
do{
r = m % n;
m = n;
n = r;
//cout <<r << "\t" << m << "\t" << n << endl;
}while(r);
return m;
}
递归实现:
void EuclidGCD2(int m, int n)
{
if (m % n != 0)
EuclidGCD2(n, m % n);
else
cout << n << endl;
}