当前位置: 首页 > news >正文

辗转相除法

用处

求出 ab 两个整数间的最大公因数

原理

由于这个算法涉及到数论,我们使用几何图形来展示原理:

步骤一

博客园图片
我们假设 a 、 b 分别对应长方形的长、宽

步骤二

博客园图片
每一次操作,取出 n 个短边长的正方形填充长方形

这次操作后,新的长方形的长、宽分别为 \(b\)\(a \bmod b\)

步骤三

博客园图片

\[\begin{aligned}a \bmod b = r_1 \end{aligned} \]

这次操作后,新的长方形的长、宽分别为 \(r1\)\(b \bmod r1\)

步骤四

博客园图片

\[\begin{aligned}b \bmod r_1 = r_2 \end{aligned} \]

这次操作后,新的长方形的长、宽分别为 \(r2\)\(r1 \bmod r2\)

步骤...

一直重复此操作,直至正方形可以将长方形完全填充,此时正方形的边长就是所求最大公约数

实现

该算法通常有两种实现方式,分别为递归法与迭代法

递归

template <typename T, typename U> constexpr auto gcd(const T &_a, const U &_b) -> typename std::common_type_t<T, U>
{using RT = std::common_type_t<T, U>;auto a = _a >= 0 ? static_cast<RT>(_a) : static_cast<RT>(-_a);auto b = _b >= 0 ? static_cast<RT>(_b) : static_cast<RT>(-_b);if (b == 0)return a;return gcd(b, a % b);
}

迭代

template <typename T, typename U> constexpr auto gcd(const T &_a, const U &_b) -> typename std::common_type_t<T, U>
{using RT = std::common_type_t<T, U>;auto a = _a >= 0 ? static_cast<RT>(_a) : static_cast<RT>(-_a);auto b = _b >= 0 ? static_cast<RT>(_b) : static_cast<RT>(-_b);while (b != 0){RT temp = b;b = a % b;a = temp;}return a;
}
http://www.gsyq.cn/news/130936.html

相关文章:

  • .NET WebForm如何支持文件夹目录结构上传的断点续传?
  • 2025年广州管道疏通联系方式汇总:全市专业服务商官方联系渠道与高效合作指引 - 十大品牌推荐
  • 2025年昆明管道疏通联系方式汇总:全市专业服务机构官方联系渠道与高效服务指引 - 十大品牌推荐
  • AI生成图表新范式:Excalidraw+NLP协同工作流
  • 【Open-AutoGLM朋友圈文案生成】:揭秘AI自动生成爆款文案的底层逻辑与实战技巧
  • 2025年北京家庭搬家公司联系方式汇总: 核心城区专业服务商联系通道与一站式搬迁指南 - 十大品牌推荐
  • Excalidraw与Google Drive文件互通方案
  • 为什么90%的Open-AutoGLM部署卡在版本兼容?真相在这里
  • Open-AutoGLM消息引擎深度解析(颠覆传统客服的AI黑科技)
  • python多进程读写共享内存,使用管道进行同步通信后是否还需要使用锁机制
  • 构建以质量为核心的软件开发文化生态
  • 秩序幻觉:当技术理性遭遇系统混沌,如何保持内心的清晰
  • C#在.NET MVC中如何设计大附件上传的进度监控界面?
  • 事倍功半是蠢蛋70 命名问题
  • Excalidraw移动端体验优化策略
  • Excalidraw性能调优:大规模图形渲染优化
  • 2025年长春管道疏通联系方式汇总:全市专业服务官方联系渠道与高效合作指引 - 品牌推荐
  • 从耗时10小时到40分钟:Open-AutoGLM微调效率逆袭之路
  • Open-AutoGLM广域网访问配置全攻略(专家级实战经验曝光)
  • 【专家亲授】Open-AutoGLM迁移学习加速方案:训练时间缩短70%的实操路径
  • 跨平台AI模型部署难题全解析,Open-AutoGLM适配方案深度拆解
  • (首次公开)Open-AutoGLM多端部署适配框架设计全貌
  • Excalidraw图层管理功能进阶用法
  • 2025年度广佛双主轴定制口碑榜TOP10,收藏备用,正交Y/36排刀机/刀塔机/46排刀机/双主轴双排刀/动力刀塔双主轴采购需要多少钱 - 品牌推荐师
  • 技术文档配图新选择:Excalidraw手绘风更吸睛
  • 远程团队必备!Excalidraw实现实时协作绘图
  • Excalidraw与Figma的互补使用场景
  • AI编程:程序员的职业新方向
  • Excalidraw导入导出兼容性测试报告
  • 想找国际可靠热致变色纱线公司?这几点为你80%避坑!