辗除法求最大公约数_用欧几里得算法求最大公约数

news/2024/7/2 15:29:19

12 和 18 的最大公约数是多少?

最大公约数:最大公约数,也称最大公因数、最大公因子,指两个或多个整数共有约数中最大的一个。例如:18 与 12 的最大公约数为 6 。

短除法短除法是求最大公因数的一种方法:先把每个数的因数找出来,然后再找出公因数,最后在公因数中找出最大公因数。

413bcdaf297bde6436ee48e26614074f.png

因式分解法

7fc33c53f13af91c4b59d534d70f072b.png

在初中数学题中,基本上我们就是采取因式分解或者短除法的形式来求最大公约数。

但是它们存在的问题是:当公共素因子较小时,通过观察可以很快找出;但是当公因子较大时,仅仅通过观察已经很难找出甚至在一定时间内找不出。

比如求 22008 和 655 的最大公约数时,很难直接找到其公因子。

那么有没有更好的方法来求解最大公约数呢?答案是有的,就是接下来要介绍的欧几里得算法。

欧几里得算法

欧几里得算法(英语:Euclidean algorithm),又称 辗转相除法,是求最大公约数的算法。

辗转相除法基于如下原理:两个整数的最大公约数等于其中较小的数和两数的差的最大公约数。

辗转相除法首次出现于欧几里得的《几何原本》(第VII卷,命题i和ii)中,而在中国则可以追溯至东汉出现的《九章算术》。

辗转相除法基于如下原理:两个整数的最大公约数等于其中较小的数和两数的差的最大公约数。例如,252 和 105 的最大公约数是 21;因为 252 − 105 = 21 × (12 − 5) = 147 ,所以 147 和 105 的最大公约数也是 21。

在这个过程中,较大的数缩小了,所以继续进行同样的计算可以不断缩小这两个数直至其中一个变成零。

这时,所剩下的还没有变成零的数就是两数的最大公约数。

将上面的较大的数缩小的过程中往往使用的是 MOD 操作。

MOD,是一个 数学运算符号-----求余运算符。

例如 a mod b = c,表明 a 除以 b 余数为 c 。 在整数的除法中,只有能整除与不能整除两种情况,所以当不能整除时,就会产生余数。

我们借助于 MOD 使用 辗转相除法的概念来求数字 1112和数字 695的最大公约数。

当余数变为 0 的时候,最后一个操作的 除数是最大公约数,即 139是数字 1112和数字 695的最大公约数。

16187184fd8c927d413909343b150748.png

设计来源于算法动画讲解

一般算法流程如下:

09d4739f74cbea92faf099797ffb5a2e.png

动画理解

通过动画来理解一下为什么使用 辗转相除法可以找到最大公约数。

将最大的公约数设置为 n,当然虽然一开始对于每个整数是不知道可以分段成多少个 n 的,但是,可以知道 1112 和 695 都是最大公约数 n 的倍数。

540fe2b22afdd07cd6299a494cdef751.png

通过 mod 操作,不停的找余数。

7dddba48aab279b2247af7c897863c1a.gif
7078c53c2d77fca264707ba418cf4de9.gif

最后两个数是倍数关系,可以整除,余数为 0 ,结束了操作。

60c891f91697ea93174e8fd14c11d884.gif

此时剩下的一条线段的长度就是 1112 和 695 的最大公因数。


http://www.niftyadmin.cn/n/1895018.html

相关文章

canal mysql从库_Canal 实现 Mysql数据库实时数据同步

简介1.1 canal介绍​ Canal是一个基于MySQL二进制日志的高性能数据同步系统。Canal广泛用于阿里巴巴集团(包括https://www.taobao.com),以提供可靠的低延迟增量数据管道,github地址:https://github.com/alibaba/canalCanal Server能够解析MyS…

模型剪枝和量化_人脸识别系统之模型压缩裁剪量化

本文用途仅仅是在前人经验下,自我总结,以供以后学习使用,若有错误,敬请您批评指正。应用背景:深度学习的应用加速了计算机视觉领域的发展,但是随着模型深度的加深,也带来了高额的存储空间、计算…

代码生成器开发笔记(2)-数据库架构

代码生成器开发笔记(2)-数据库架构 程序 2009-06-13 01:30:01 阅读55 评论0 字号:大中小 订阅 要完成代码生成器,第一个要解决的是完全解析数据库架构。 对SQL Server当然没什么问题,早在ADO时代就可以通过查询sy…

mysql on linux 安装_MySQL on Linux手动安装方法

MySQL on Linux手动安装方法发布时间:2007-06-05 11:44:45来源:红联作者:TecCTO1. 下载"mysql-standard-5.0.27-Linux-i686-icc-glibc23.tar.gz",推荐ICC版本,据称比GCC性能提高10-20%2. 复制到/usr/local/,解压:tar zx…

MongoDB最新最佳连接工具:Robo 3T

MongoDB连接工具 像使用Mysql,喜欢用Navicat连接工具一样。 在使用MongoDB数据库的时候,同样可以使用Robo 3T图形化工具。 一、下载Robo 3T Robo 3T官网 Studio 3T:专业人士使用的,需要付费。 Robo 3T:虽然免费&…

mysql audit_mysql5.7添加日志审计插件audit-plugin

来自McAfee的MySQL插件,为MySQL提供审计功能,重点是安全性和审计要求。该插件可以用作独立的审核解决方案,也可以配置为将数据提供给外部监视工具。插件下载地址:首先查看mysql的插件保存目录:mysql> show global v…

代码生成器开发笔记(3)-界面设计

代码生成器开发笔记(3)-界面设计 程序 2009-06-13 13:48:34 阅读73 评论0 字号:大中小 订阅 解决了数据架构问题,开始正式动手写代码。 第一个问题当然是界面设计了。准备做成VS2005风格,也就是多文档、支持窗体停靠&#xf…

拓扑排序c语言代码_折半插入排序算法(C语言代码实现)

上一节介绍了直接插入排序算法的理论实现和具体的代码实现,如果你善于思考就会发现该算法在查找插入位置时,采用的是顺序查找的方式,而在查找表中数据本身有序的前提下,可以使用折半查找来代替顺序查找,这种排序的算法…