最大公约数----欧几里德算法
2012-09-03 15:07
274 查看
在书上看到一个求解最大公约数的算法。代码如下:
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),是一种高效的算法。
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),是一种高效的算法。
相关文章推荐
- 求最大公约数-辗转相除法-欧几里德算法
- 欧几里德算法(最大公约数算法)
- C语言辗转相除法(欧几里德算法)求最大公约数
- 欧几里德算法求最大公约数 - Ruby
- 最大公约数与欧几里德算法
- 欧几里德算法求最大公约数
- 欧几里德算法 -- 求最大公约数
- 欧几里德算法求最大公约数
- 欧几里德算法(辗转相除法):求两个整数最大公约数
- 求最大公约数--欧几里德算法 及 最小公倍数
- 求最大公约数:欧几里德算法(即 辗转相除法 )
- 欧几里德算法-求最大公约数
- 欧几里德算法求解最大公约数
- 欧几里德算法(最大公约数)
- 欧几里德算法(最大公约数)
- 欧几里德算法(辗转相除法)计算两个整数的最大公约数
- 欧几里德算法(辗转相除法) 求最大公约数
- 编程求取两个整数的最大公约数.欧几里德算法
- 两个数的最大公约数------欧几里德算法(辗转相除法)
- 趣味分数-辗转相除 (欧几里德算法) 递归算法 求最大公约数-java