在书上看到一个求解最大公约数的算法。代码如下:
unsigned int gcd(unsigned int M , unsigned int N)
{
unsigned int tmp;
if(N > M)
{
tmp = M;
M = N;
N = tmp;
}
while (N > 0)
{
tmp = M % N;
M = N;
N = tmp;
}
return M;
}
因为余数tmp最多是M的一半,所以迭代的次数为logM,
所以算法的时间复杂度为O(logN),是一种高效的算法。