要完成任务:找到gcd(a,b)中的整数a> b> 0
考虑一种算法,该算法检查直到b的所有数字,并跟踪除以a和b的最大数。每次检查将使用%运算符两次(对于a和b)。这种算法的复杂性是什么?
我还没有参加过复杂性理论的任何正式CS课程(我将很快),所以我只是在寻找一个快速答案。
答案 0 :(得分:1)
模运算是在硬件中实现的,它是伪O(1)
。严格来说,它不是恒定的,但取决于a
和b
的位数。但是,即使这样,所有输入大小的位数都是相同的,因此我们通常会忽略此因素。
蛮力GCD的最坏情况下的复杂度仅为O(n)
(还有O(a)
,O(b)
或O(min(a,b))
;它们都是一样的),并且当GCD为1
,a
或b
时发生。