最大公约数-欧几里得算法

news2025/1/15 23:10:46

最近在复习数论,欢迎来到数论的起点gcd

最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。

欧几里得算法(辗转相除法)11 % 2 = 11 - 5\times 2

已知两个数a和b,求出两数的最大公约数

首先证明:gcd(a,b)=gcd(b,a%b)

不妨设a > b,则有a%b=a-[\frac{a}{b}]\times b([\frac{a}{b}]意为向下取整),令k=[\frac{a}{b}],则有a%b=a-kb。例如:11 % 2 = 11 - 5 * 2。

下面证明上式的充要性:

(1)若d(a,b)的公约数,则d|ad|b(d能整除ab),由a%b = a - kb,则d|(a%b),所以d也是(b,a%b)的公约数。

(2)若d(b,a%b)的公约数,则d|bd|(a-kb),则d|(a-kb+kb)=d|a,则d也是(a,b)的公约数。

综上得证(a,b)(b,a%b)得公约数相同,故最大公约数也相同。

综上对于求解最大公约数,我们可以递归求解,直到a%b=0,此时b就是最大公约数。

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

时间复杂度O(logn)

既然是递归求解会出现栈溢出问题吗?
以下内容出自《算法竞赛入门经典》:
可以证明的是gcd函数递归层数不超过 4.785lgN+1.6723,其中 N=max{a,b}。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/145368.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

uni-app入门:组件的基本使用

1.组件概念 2.组件分类 2.1 基础组件 2.2 拓展组件 2.3 easycom规范 3.自定义组件以及使用 3.1局部注册 3.2全局注册 1.组件概念首先讲一下什么是组件 官方说法: 组件是视图层的基本组成单元。 组件…

MySQL高级【存储过程】

1:存储过程1.1:介绍存储过程是事先经过编译并存储在数据库中的一段 SQL 语句的集合,调用存储过程可以简化应用开发 人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。 存储过…

玩转系统|Ventoy – 免格式化,超简单的『多合一』系统启动盘制作神器

Ventoy 现在可谓是U 盘启动界的一支独秀,简单来说,Ventoy 是一个制作可启动 U 盘的开源工具。有了 Ventoy 你就无需反复地格式化 U 盘,你的U盘不在局限于绑定某个PE系统,你只需要把 ISO/WIM/IMG/VHD(x)/EFI 等类型的文件拷贝到 U …

风控中的企业利润表的解读

对于中小微企业财务报表数据的三张最重要的报表——资产负债表、利润表、现金流量表,在评估企业的资质能力与风险程度等方面,都发挥着非常重要的作用。作为企业财务数据最基础的三个报表,每一类报表的数据指标信息,都从不同维度客…

用javascript分类刷leetcode18.队列(图文视频讲解)

队列的特点:先进先出(FIFO)队列的时间复杂度:入队和出队O(1),查找O(n)优先队列:priorityQueue,按优先级出队,实现 Heap(Binary,Fibonacci...)js里没有队列,但是可以用数组…

【数据结构】5.4 二叉树的性质和存储结构

二叉树的性质 性质1: 在二叉树的第 i 层上至多有 2 i-1 个结点(i > 1)。 证明:利用归纳法证明此性质。 第 i 层上至少也应该有 1 个结点,如果是 0 个结点的话那就没有这一层了。 性质2: 深度为 k &a…

java static 关键字

目录 一、前言 二、用途和效果 2.1. static修饰的范围 2.2.执行特点 2.3.static关键字的用途 三. 注意 static关键字误区: 一、前言 在我们学习java中会碰到许多关键字 , 例如: static、final、 transient、instanceof、break 、continue 等其他的关键字,今天…

CBM|用于lncRNA-疾病关联预测的数据资源和计算方法(综述)

CBM|用于lncRNA-疾病关联预测的数据资源和计算方法(综述) 最近搞了个公众号《AI and Bioinformatics》介绍应用于生物信息学的人工智能算法和研究进展,以及网络表示学习算法研究,欢迎向本公众号投稿文献解读类原创文章&#xff0…

11_7、Java集合之Collections工具类的使用

一、作用是操作Collection和Map的集合操作类。二、常用方法1、排序操作:(均为static方法)reverse(List):反转 List 中元素的顺序shuffle(List):对 List 集合元素进行随机排序sort(List):根据元素的自然顺序…

20.04安装carla0.9.13记录

已经多次在不同版本的系统18.04、20.04安装carla不同源码版本0.9.11,0.9.12,0.9.13了,发现每次安装总是会遇到那么几个问题,现在新配了主机又要重新安装carla,这次准备详细的记录一下,方便未来安装时又遇到…

共享单车蓝牙锁方案phy6222系列蓝牙芯片

公共交通工具的"最后一公里"是城市居民出行采用公共交通出行的主要障碍,也是建设绿色城市、低碳城市过程中面临的主要挑战。随着科技的发展,物联网领域市场的不断开拓BLE协议在共享交通工具上打开了突破口,目前已广泛应用及遍布我们…

更换服务器的笔记

文章目录背景问题汇总服务器 git 的建立Q: 启动的服务连不上背景 最近阿里云的服务器到期了,但是续费实在是太贵了 之前是嫌麻烦,然后续费还挺便宜的,所以就没折腾去换服务器 这回续费一个月就小一百, 吃不消了,不得…

【论文简述】DPSNet End-to-end Deep Plane Sweep Stereo(ICLR 2019)

一、论文简述 1. 第一作者:Sunghoon Im 2. 发表年份:2019 3. 发表期刊:ICLR 4. 关键词:MVS、深度学习、端到端、代价体、代价聚合 5. 探索动机:双目立体匹配无法扩展到多视图,平面扫描方法无法进行端…

基于python pyotrch开发的垃圾分类程序,含数据集,基于深度学习的垃圾分类程序

基于python的垃圾分类程序,提供数据集(pytorch开发) 完整代码下载地址:基于python pyotrch开发的垃圾分类程序,含数据集 垃圾分类是目前社会的一个热点,分类的任务是计算机视觉任务中的基础任务&#xf…

Qt进度条详解以及format显示格式

进度条的步进值 设置好进度条的最大值和最小值,进度条将会显示完成的步进值占总的步进值的百分比,百分比的计算公式为:百分比 (value() - minimum()) / (maximum() - minimum()) 部分函数含义 QProgressBar:横向或纵向显示进度的…

前端必备:五大css自动化生成网站(稀有级别!)

粉丝朋友们大家好,我是你们的 csdn的博主:lqj_本人 哔哩哔哩:小淼前端 另外,大家也可以关注我的哔哩哔哩账号,我会不定时的发布一些有关于全栈云开发以及前端开发的详解视频源码 1.微信小程序腾讯云开发之学生端收集数…

8.3K Star,这才是我们苦苦寻找的PDF阅读器。。。

程序员宝藏库:https://gitee.com/sharetech_lee/CS-Books-Store 无论是在大学期间,还是工作之后都很难绕开PDF软件。 比如看个论文、课件、演示文档…经常会用到PDF。 大学期间我是一个特别爱折腾各种各样电子产品、数码、软件、操作系统,曾…

囿于数据少?泛化性差?PaddleDetection少样本迁移学习助你一键突围!

目标检测是非常基础和重要的计算机视觉任务,在各行业有非常广泛的应用。然而,在很多领域的实际落地过程中,由于样本稀缺、标注成本高或业务冷启动等困难,难以训练出可靠的模型。 在目标检测这类较为复杂的学习任务上,样…

2023年跨境电商依然是风口,如何做好跨境电商

2023年1月1日,《区域全面经济伙伴关系协定》(RCEP)正式签署生效一周年,(rcep)于2023年1月2日起,RCEP对印度尼西亚正式生效,至此,我国已与其他14个rcep成员中的13个相互实施协定。这预示着,东南亚市场必将成…

下拉控件无法选中

本文迁移自本人网易博客,写于2012年1月9日,二维多段线绘制 - lysygyy的日志 - 网易博客 (163.com)做符号化过程中,一开始发现控件下拉后导致死机,原来是资源切换的问题,使用CAcModuleResourceOverride resOverride;即可…