最大公约数----欧几里德算法

        在书上看到一个求解最大公约数的算法。代码如下:

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),是一种高效的算法。

你可能感兴趣的:(算法)