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)?
一样呈线性答案 0 :(得分:1)
我会说它是O(max(n,m))
,因为对于n和m,它应该是对称的,因为算法是。
@PaulHankin将此改进为O(max(n,m)/gcd(n,m))
。