社区讨论
一点关于辗转相除法和优化后的更相减损术优劣的想法
P2152[SDOI2009] SuperGCD参与者 7已保存回复 19
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 19 条
- 当前快照
- 1 份
- 快照标识符
- @mi7yiptk
- 此快照首次捕获于
- 2025/11/21 05:42 4 个月前
- 此快照最后确认于
- 2025/11/21 06:44 4 个月前
容易知道经过除2优化后的更相减损术复杂度也可以达到小常数的O(n^2)(n是较大的那个数的位数)。
考虑尽可能多的制造相减的过程,比如说假设a= (2^n-1) *b+ c, 并且假设b一样有n位是奇数,那么更相减损术就需要做O(n)次O(n)的高精度减法和除半。但是特别的,如果假设c=0, 那么这一次计算对辗转相除法而言的时间复杂度是O(n log n),这种情况下很有可能辗转相除法要比更相减损术要快。
反过来说,如果每次计算的时候a和b的差别不大,每次计算的商都很小(比如说斐波那契数列的相邻两项),这样构造数据很快就能达到辗转相除法的最大复杂度O(n^2 log n)(包括了高精度除法的部分),这个时候反而能够很好的体现更相减损术的高精减复杂度和常数小的优点。
也许可以根据两个算法的常数找到一个比值,能够在这两种算法中寻求平衡?
回复
共 19 条回复,欢迎继续交流。
正在加载回复...