更相减损术

介绍

​   更相减损术是出自《九章算术》的一种求最大公约数的算法,它原本是为约分而设计的,但它适用于任何需要求最大公约数的场合

步骤

  1. 任意给定两个正整数;判断它们是否都是偶数。若是,则用2约简;
  2. 以较大的数减较小的数,接着把所得的差与较小的数比较,并以大数减小数。继续这个操作,直到所得的减数和差相等为止。
  3. 第1步中约掉的若干个2的积与第2步中其中一个等数的乘积就是所求的最大公约数

解释

  首先 我们设 a>b,gcd(a,b) = ans ,【用2约简】假设有 n 个 2 ,那么 gcd(a- 2*n,b-2 *n),那么最大公约数 ans 素因子分解后一定有 2的 n次方。

 【大数减小数】我们知道a%ans=0,b%ans=0,gcd(a-b,b)=ans 不变是因为 a 减去的是 b ,b是 x 倍的 ans。一直迭代 大数减小数,直到两数相等最大公因数就是它(约简后的a,b)本身。最后乘以约简的2

更相减损术时间复杂度高于辗转相除法


辗转相除法

  欧几里得算法又称辗转相除法,是指用于计算两个非负整数a,b的最大公约数。

  计算公式 gcd(a,b) = gcd(b,a mod b)。

解释

​  刚刚说了更相减损术,那更相减损术中的 【大数减小数】若a 远远大于b ,那就需要多次的 gcd(a-b,b),也就是gcd(a-k*b,b)
a - k * b = a%b (k值作为最大值)

【求最大公约数详解】更相减损术和辗转相除法相关推荐

  1. 更相减损术,辗转相除法

    一,更相减损术是出自<九章算术>的一种求最大公约数的算法,它原本是为约分而设计的,适用于任何需要求最大公约数的场合. 证明: 设gcd(x,y)=d,则满足x=k1*d,y=k2*d,易得 ...

  2. 最大公约数算法_更相减损法_辗转相除法(即欧几里得算法)

    package algorithm;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStr ...

  3. 求最大公约数(更相减损术辗转相除法)

    求解最大公约数的多种Way: 1 暴力解决法:M不断自减找到最大公约数. 2 辗转相除法:反复做除法运算,当余数为 0 时,取当前算式除数为最大公约数. 3 更相减损术:若两者都为偶数,进行折半,直到 ...

  4. 更相减损术程序设计c语言,更相减损术

    本词条缺少概述图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! 更相减损术是出自<九章算术>的一种求最大公约数的算法,它原本是为约分而设计的,但它适用于任何需要求最大公约数的场合 ...

  5. 五十六、从高中碾转相除法、更相减损术算法谈起

    @Author:Runsen 编程的本质来源于算法,而算法的本质来源于数学,编程只不过将数学题代码化. ---- Runsen 先问你们一个小学问题:如何求两个整数的最大公约数? 曾经见过不少的算法题 ...

  6. 6.算法之数学(数论)算法——更相减损术

    目录 1.什么是更相减损术? 2.数学推导 3.代码实现 4.最小公倍数计算 1.什么是更相减损术? 其使用方法如下 举个例子吧 可见更相减损术和辗转相除法有异曲同工之妙. 其数学原理也是一样的. 2 ...

  7. 更相减损法java,五十六、从高中碾转相除法、更相减损术算法谈起

    「@Author:Runsen」❝ 编程的本质来源于算法,而算法的本质来源于数学,编程只不过将数学题进行代码化.「---- Runsen」❞ 先问你们一个小学问题:「如何求两个整数的最大公约数?」 曾 ...

  8. 辗转相除法和更相减损术

    高中学过的求大公约数的方法就是辗转相除法和更相减损术了. 辗转相除法递归版 #include <iostream> using std::cin; using std::cout; usi ...

  9. C语言 用更相减损术求最大公约数,最小公倍数

    更相减损术 更相减损术是出自<九章算术>的一种求最大公约数的算法,它原本是为约分而设计的,但它适用于任何需要求最大公约数的场合. 出处 <九章算术> 用途 求最大公约数 作用 ...

最新文章

  1. FFmpeg中AVDictionary介绍
  2. A星算法(Java实现)
  3. WIN7中 HttpListener 拒绝访问 异常解决 C#
  4. map(&:name)在Ruby中是什么意思?
  5. div+css实现表头固定内容滚动表格
  6. ASP.NET比较常用的26个性能优化技巧
  7. centos7 没有pip命令_Linux(CentOS7)部署系列---Docker编排应用部署方案
  8. windows-vscode编写c/c++(适用日期2020-5月的vscode)--简洁版(下载gdb.exe)
  9. 单片机编程主函数的特点
  10. Oracle Minus关键字
  11. 15款精美的 WordPress 电子商务网站模板
  12. oracle foreign 查询,ORACLE foreign key
  13. 位运算初步入门状态压缩操作
  14. ISO9000认证与互联网转型
  15. UEFI规范实现EDKII项目学习笔记绪论[0]
  16. [听风]TBC单体插件数据统计Recount
  17. 英语口语必备900句
  18. 扩散模型训练太难?来看看Meta AI最新提出的KNN-Diffusion
  19. 单核CPU仍然存在线程安全问题
  20. ARCMAP里面关于地理投影方面的知识

热门文章

  1. linux下使用QT5.8实现虚拟键盘
  2. 为什么说支付宝推出余额宝值得赞赏?
  3. lol最克制诺手的英雄_LOL:最克制诺手的五大英雄,锐雯上榜,第一名能全程吊打诺手!...
  4. PS瘦脸处理及去黑眼圈
  5. Android studio连不上手机adb服务开启失败
  6. 【南阳ACM】 喷泉装置(一)
  7. Q_DISABLE_COPY、Q_DISABLE_MOVE、Q_DISABLE_COPY_MOVE用法详解及总结
  8. python应用程序无法正常启动0xc0000142_office显示应用程序无法正常启动0xc0000142怎么解决...
  9. 上百部BBC经典纪录片,既学英语又涨知识,送给程序员们~~
  10. Seafood Legacy Co., Ltd.宣布2021年东京可持续海鲜峰会开放报名