GCD算法的运行时间?

时间:2017-02-07 04:52:39

标签: algorithm time asymptotic-complexity

unsigned int gcd(unsigned int n, unsigned int m)
{
if (n == 0) 
    return m; 
if (m == 0) 
    return n; 

while (m! = n)
{
if (n > m) 
    n = n − m; 
else 
    m = m − n;
}
return n;
}

使用while循环的迭代GCD算法的一些伪代码。我没有任何地方被2分割,所以我不认为它是对数的。由于while循环运行的时间与N成正比,它是否像O(N)?

一样呈线性

1 个答案:

答案 0 :(得分:1)

我会说它是O(max(n,m)),因为对于n和m,它应该是对称的,因为算法是。 @PaulHankin将此改进为O(max(n,m)/gcd(n,m))