社区讨论

是不是辗转相除复杂度反而有问题啊

P2152[SDOI2009] SuperGCD参与者 6已保存回复 20

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
20 条
当前快照
1 份
快照标识符
@lochialo
此快照首次捕获于
2023/10/30 13:53
2 年前
此快照最后确认于
2023/11/05 01:20
2 年前
查看原帖
nn 为数的大小,进制数是常数,则位数是 O(logn)O(\log n) 的,朴素高精度除法就是 O(log2n)O(\log^2n) 的了,求 GCD 的时候需要除 O(logn)O(\log n) 次,总复杂度就是 O(log3n)O(\log^3n)
而高精度减法和高精除 22 复杂度都是 O(logn)O(\log n) 的,而有人已经证明了带除 22 的更相减损术操作次数是 O(logn)O(\log n) 了,总复杂度就是 O(log2n)O(\log^2n) 了。
不把进制数当成常数也一样,高精度除法无论如何都会比高精度减法复杂度高一些,而操作次数复杂度一样,所以辗转相除的算法复杂度是比更相减损术差的。
(说实话当时我小奥老师让我们求 GCD 的时候就教过这个方法,不要相除(因为容易出错而且计算量大),而是相减然后约掉一些明显不在 GCD 中的因数)

回复

20 条回复,欢迎继续交流。

正在加载回复...