蛮力GCD算法的复杂度

Complexity of brute force GCD algorithm

完成任务:找到整数 a>b>0 的 gcd(a,b)

考虑一种算法,该算法检查直到 b 的所有数字并跟踪除以 a 和 b 的最大数字。它会在每次检查时使用 % 运算符两次(对于 a 和 b)。这个算法的复杂度是多少?

我还没有参加过任何正式的复杂性理论 CS 课程(我很快就会参加),所以我只是在寻找一个快速的答案。

模运算是硬件实现的,伪O(1)。严格来说不是常数,而是取决于ab的位数。然而,即便如此,所有输入大小的位数都是相同的,所以我们通常忽略这个因素。

暴力 GCD 的最坏情况复杂度仅为 O(n)(还有 O(a)O(b)O(min(a,b));它们都是相同的),当 GCD 为 1ab.

时,就会发生这种情况