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

来源:互联网 发布:app ui 制作软件 编辑:程序博客网 时间:2024/05/17 22:30

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

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

原创粉丝点击