更相减损法:也叫更相减损术,是出自《九章算术》的一种求最大公约数的算法,它原本是为约分而设计的,但它适用于任何需要求最大公约数的场合。
《九章算术》是中国古代的数学专著,其中的“更相减损术”可以用来求两个数的最大公约数,即“可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也。以等数约之。”
翻译成现代语言如下:
第一步:任意给定两个正整数;判断它们是否都是偶数。若是,则用2约简;若不是则执行第二步。
第二步:以较大的数减较小的数,接着把所得的差与较小的数比较,并以大数减小数。继续这个操作,直到所得的减数和差相等为止。
则第一步中约掉的若干个2与第二步中等数的乘积就是所求的最大公约数。
其中所说的“等数”,就是最大公约数。求“等数”的办法是“更相减损”法。所以更相减损法也叫等值算法。
利用辗转相减法很快就可以得到两个数的最大公约数
程序代码:

#include<stdio.h>
int main() {int a, b, t;printf("请输入两个数!\n");scanf_s("%d%d",&a,&b);if (a == b) {printf("最大公约数%d\n", a);}else {while (a != b) {if (a > b)a = a - b;elseb = b - a;}printf("最大公约数是:%d\n", a);}return 0;
}

运行结果:

求两个数的最大公约数(辗转相减法)相关推荐

  1. C:求两个数的最大公约数详解(硬核算法,辗转相除法,更相减损法)

    最大公因数,也称最大公约数.最大公因子. 定义: 指两个或多个整数共有约数中最大的一个. a,b的最大公约数 记为(a,b),同样的,a,b,c的最大公约数记为(a,b,c),多个整数的最大公约数也有 ...

  2. 辗转相除法是求两个数的最大公约数的方法。

    题目: /*      第五题 辗转相除法是求两个数的最大公约数的方法. */ 代码部分: #include<iostream> using namespace std;int x; in ...

  3. 暴力 gcd __gcd (详解)C语言求两个数的最大公约数

    首先我们要先知道gcd是什么东西? GCD作为缩写意义有多种.它通常表示最大公约数(greatest common divisor,简写为gcd:或highest common factor,简写为h ...

  4. php怎么求最小公倍数,C++_详解C语言求两个数的最大公约数及最小公倍数的方法,求两个正整数的最大公约数nbs - phpStudy...

    详解C语言求两个数的最大公约数及最小公倍数的方法 求两个正整数的最大公约数 思路:这是一个很基本的问题,最常见的就是两种方法,辗转相除法和辗转相减法.通式分别为 f(x, y) = f(y, x%y) ...

  5. c语言中两个数最大公约数怎么求,C语言求两个数中最大公约数

    在C语言中如何求两个数的最大公约数呢?下面用三种方法进行求解. 方法一:穷举法. 先比较两个数的大小,然后找出较小数t,最后判断t为何值时两个数都能整除,此方法效率较低. 代码如下:#include ...

  6. 百度web前端面试题之求两个数的最大公约数和最小公倍数

    求两个数的最大公约数和最小公倍数,好像是第三题, 找到如下简洁写法: <1> 用辗转相除法求最大公约数 算法描述: m对n求余传给自己,再次求余, 若余数等于0 则 n 为最大公约数 &l ...

  7. 程序员数学基础【四、取模应用-判断奇偶数、判断素数、求两个数的最大公约数、水仙花数】(Python版本)

    测试使用语言:[Python] 由于此类语言入门非常容易,哪怕初中生亦可以,并且本科/研究生写论文.做实验多数所用语言都是[Python]故而选择此语言. 代码运行平台:[win10 x64] 代码环 ...

  8. 用递归法求两个数的最大公约数

    用递归法求两个数的最大公约数 求两个数的最大公约数的思路是,用辗转现除法 辗转相除法求两个数的最大公约数的步骤如下: 先用小的一个数除大的一个数,得第一个余数: 再用第一个余数除小的一个数,得第二个余 ...

  9. python求两个数的最大公约数穷举法_五十九、如何求N个数的最大公约数和最小公倍数...

    「@Author:Runsen」 ❝ 编程的本质来源于算法,而算法的本质来源于数学,编程只不过将数学题进行代码化.「---- Runsen」 ❞ 上次介绍了短除法的因式分解,下面正式进入求解:「两个及 ...

最新文章

  1. Python:matplotlib实践:直方图、散点图展示、变色、线条变换、点样式变换、添加名称、设置横纵轴范围、在一张图上显示多条线
  2. apns 服务器 php,PHP技术来查询APNs反馈服务器
  3. hdu 2514 Another Eight Puzzle
  4. 解决 Unable to load native-hadoop library for your platform方法之一
  5. 前端学习(1033):jquery插件-图片懒加载
  6. gitbook mysql_使用Gitbook做笔记
  7. CM,CDH 修改迁移元数据库
  8. c 语言 json序列化,C#中json字符串的序列化和反序列化 – 万能的聪哥 – 博客园...
  9. 提交数据网页设计_网站网页编写需要注意哪些问题?
  10. python交互模式什么意思_python交互模式是什么
  11. Google 如何设计与构建超大规模的软件系统
  12. 相克军_Oracle体系_随堂笔记011-事物
  13. Hacker's Technique programme pdf+源码
  14. 最简单的方法来压缩图片(无需下载工具)
  15. 新基建安全怎么做?看看这场院士领衔的高峰对话
  16. oracle没commit有日志吗,commit操作是否一定会被记录到redo等问题的研究
  17. openerp QWeb
  18. mysql chinanet外网连接不上_笔记本电脑无法连接到ChinaNet无线网络怎么解决?
  19. 快速抢占Shopee墨西哥广告蓝海,Shopee广告投放策略分享
  20. 【Python学习笔记②】——基础的数据结构【两万字总结 + 字符串、列表、元组、字典 + 增删查改】

热门文章

  1. java控制热敏打印机的例子.rar_stm32控制热敏打印机
  2. linux 获取视频截图,linux ffmpeg 视频截图 安装使用
  3. Algorithm negotiation fail解决
  4. linux cat和vim区别,cat命令和vim存在着什么区别
  5. webstrom怎么配置git并提交
  6. Android免root查看数据库内容
  7. 青龙面板库 大全(9.6更新)
  8. STM32F4xx系列使用HAL库配置SPI-读写FLASH
  9. 李彦宏对话大学生:走出直线人生
  10. 3.Omni-USDT关于支付手续费的UTXO顺序问题研究