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

GCD算法的学习

GCD算法的学习

学习了前辈wzx15927662183的文章GCD算法精讲-CSDN博客

介绍

GCD通常用来求两个数的最大公约数

算法的核心:gcd(a,b) = gcd(b,a % b)

证明的思路:

证明 gcd(a, b) = gcd(b, a % b) 的思路:
设 a > b
1. 构造 a % b : 设 r = a % b, 即 a = kb + r (r < b)
2. 构造 a, b的公约数: 设 d 为 a, b的公约数,记作 d | a, d | b
3. 联系要证明的式子 : a = kb + r 两边同时处以 d, 稍作移动,得 a / d - kb / d = r / d由于 d | a 且 d | b故得到 d | r,即 d | (a % b)所以 d 是 a、b、a % b的公约数。我们只需要通过迭代 / 递归 找到 gcd(b, a % b) 即可

模版

递归版

public int gcd(int a, int b) {return b > 0 ? gcd(b, a % b) : a;
}

迭代版

public int gcd(int a, int b) {int tmp = 0;while ((a % b) != 0) {tmp = a % b;a = b;b = tmp;}return b;
}

例题

  1. easy: 1979.找出数组的最大公约数
http://www.xdnf.cn/news/152.html

相关文章:

  • 第三阶段面试题
  • Git常用命令分类汇总
  • 如何学习和研究量子计算与量子计算机:从理论到实践的完整路径
  • MySQL+Redis实战教程:从Docker安装部署到自动化备份与数据恢复20250418
  • Qt官方案例知识点总结(图形视图——Colliding Mice)
  • 人脸扫描黑科技:多相机人脸扫描设备,打造你的专属数字分身
  • 学术AI工具推荐
  • 基于WebRTC技术的EasyRTC:支持任意平台设备的实时音视频通信解决方案
  • 科技天眼守望农田:珈和卫星遥感监测赋能智慧农业,护航粮食安全新未来
  • 替代升级VMware | 云轴科技ZStack构建山西证券一云多芯云平台
  • python有序列表
  • Excel提取图片并自动上传到文件服务器(OOS),获取文件链接
  • Docker用model.config部署及更新多个模型
  • 【基础知识补充】标准库类型:string和vector
  • JDBC 与 MyBatis 详解:从基础到实践
  • 07_Docker 资源限制
  • 软件研发技术团队管理规范
  • 安卓手机如何改ip地址教程
  • ETL数据集成平台在交通运输行业的五大应用场景
  • 旅游资源网站登录(jsp+ssm+mysql5.x)
  • LeetCode 259 题全解析:Swift 快速找出“满足条件”的三人组
  • RocketMQ 的详细使用教程
  • 【多目标进化算法】NSGA-II 算法(结合例子)
  • 【C++】 —— 笔试刷题day_19
  • Web3架构下的数据隐私与保护
  • 【数据结构_10】二叉树(2)
  • HarmonyOS:1.4 - HarmonyOS应用程序框架基础
  • Python(21)Python日期时间完全指南:从基础到实战注意事项
  • QT 文件和文件夹操作
  • 基于SpringBoot成绩管理系统设计与实现(源码+文档+部署讲解)