2022.11.21 闲话
辗转相除法 / 欧几里得算法:
给两个数,求 .
过程:
- 若 ,返回 .
- 否则,返回 (递归计算).
优化:Binary GCD 或者叫 Stein GCD .
时间复杂度分析:
取 Fibonacci 相邻两项得到单次最劣时间复杂度 , 是值域 .
求多个数的 GCD 可以势能分析,每个均摊 ,也就是 个数 GCD 的时间复杂度是 .
具体的就是考虑每个数被模一次至少减半,减半最多 次,然后就差不多完了 .
然而也只有均摊出来才是 的了吧,Knuth 指出若 均匀随机于 ,则辗转相除计算 的期望步数为 ,那个 的常数大约为 .
更相减损:最坏 ,取 和 即可卡满 .
以下是博客签名,正文无关
本文来自博客园,作者:yspm,转载请注明原文链接:https://www.cnblogs.com/CDOI-24374/p/16911666.html
版权声明:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议(CC BY-NC-SA 4.0)进行许可。看完如果觉得有用请点个赞吧 QwQ
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】