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

求两个数的最大公约数的思路是,用辗转现除法

辗转相除法求两个数的最大公约数的步骤如下:
先用小的一个数除大的一个数,得第一个余数;
再用第一个余数除小的一个数,得第二个余数;
又用第二个余数除第一个余数,得第三个余数;

这样逐次用后一个数去除前一个余数,直到余数是0为止.那么,最后一个除数就是所求的最大公约数(如果最后的除数是1,那么原来的两个数是互质数)。

例如:求1515和600的最大公约数,
第一次:用600除1515,商2余315;
第二次:用315除600,商1余285;
第三次:用285除315,商1余30;
第四次:用30除285,商9余15;
第五次:用15除30,商2余0.
1515和600的最大公约数是15.

就相当于用先用m除以n,然后下一次用n替换m,m%n替换n,变成n除以m%n,也就是m–>n,n–>m%n,这样就可以构成递归的关系,用(n,m%n)替换(m,n)。递归的出口就是当余数(上一次的m%n)n为0的时候,最大公约数就是m(上一次的n)。

代码实现如下:

import java.util.Scanner;
public class GCD {public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println("请输入两个数:");Scanner sc = new Scanner(System.in);int m = sc.nextInt();int n = sc.nextInt();System.out.print("这两个数的最大公约数为:"+gcd(m,n));}static int gcd(int m,int n){if(n==0)return m;return gcd(n,m%n);}
}

代码结果如下:

用递归法求两个数的最大公约数相关推荐

  1. Python 使用穷举法求两个数的最大公约数。

    for m in range (0,2):a = int(input("请输入一个数:"))b = int(input("请输入另外一个数:"))#判断num1 ...

  2. C语言,枚举法求两个数的最大公约数

    #include <stdio.h> /** 求a,b的最大公约数*/ int main() {//枚举法printf("Please enter two integer:\n& ...

  3. 编写函数求两个数的最大公约数,采用递归法计算两数的最大公约数。

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 题目: [实验案例3:函数的递归调用] 编写函数求两个数的最大公约数,采用递归法计算两数的最大公约数. [实验指导] 分析:m.n为两 ...

  4. c/c++求两个数的最大公约数(递归版)

    ** c/c++求两个数的最大公约数(递归版) ** 我们先假设 x>y gcd(x,y)为x与y的最大公约数,先假设gcd(x,y)=d, d为x和y的最大公约数,那么可以得到这样一个结论:x ...

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

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

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

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

  7. 求两个数的最小公约数和最小公倍数

    题目: 求两个数的最小公约数和最小公倍数 思路: 求最大公约数: 欧几里得在其<几何原本>中提出的欧几里得算法,有称辗转相除法,  具体做法是如果q和r分别是m除以n的商及玉树,m=nq+ ...

  8. Java求两个数的最大公约数及最小公倍数、求多个数的最大公约数及最小公倍数

    今天参加腾讯笔试,做编程题时在最小公倍数.最大公约数这些这么简单的知识点上卡壳了,自信心受到强烈的打击,下来后猛复习了这方面的相关编程知识. 有以下几个关键点: 1.任意正整数的最大公约数.最小公倍数 ...

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

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

最新文章

  1. 京津冀计算机学科大学排名,2021京津冀地区大学排名!北师大第3,北航第7,人大不敌天大?...
  2. Python入门100题 | 第055题
  3. Vue 进阶教程之:详解 v-model
  4. 【趣闻轶事】中奖252次?看“数学侦探”识破彩票猫腻
  5. activeMQ发送与接受消息模板代码
  6. DML和DDL含义和区别-一定要搞明白
  7. 针对 SQL Server 2008 在Windows Server 2008上的访问配置 Windows 防火墙
  8. MySQL高级-MySQL查询缓存优化
  9. fetch结合(async函数来使用)
  10. Carbon Copy Cloner for Mac(磁盘克隆/同步/备份工具)直装版
  11. Atitit 理解Monad attilax总结Atiti
  12. 布客·ApacheCN 编程/后端/大数据/人工智能学习资源 2022.2
  13. 英伟达创始人出生 | 历史上的今天
  14. Java实现家庭收支记账软件
  15. 2022年人工智能发展情况及值得关注的人工智能发展趋势
  16. Virtual host / experienced an error on node rabbit@XX and may be inaccessible
  17. 【很逗,很经典】【与靠谱IT男的浪漫闪婚记】——转个很可爱的帖子,貌似男女猪脚是咱IT人士呢...
  18. java代码整洁之道_【读书笔记】代码整洁之道
  19. PMP具体报考流程是怎样?
  20. tensorflow函数-tf.assign()

热门文章

  1. python链接sql报错_python3.7连接sqlserver数据库失败报错20002, DB-Lib error message 20002
  2. 致诸弟·明师益友虚心请教
  3. 使用icepdf将pdf转换为图片时出现乱码的问题
  4. 苹果手机开热点电脑/安卓手机无法链接?
  5. 2020-11-12杂谈
  6. 微信开发如何优雅的注入token(2)
  7. OpenCV可以识别文字吗?
  8. VisionPro软件介绍
  9. 用matlab求摆线,求由摆线x=a(t-sint),y=a(1-cost)的一拱(0≦t≦2π)与x轴所围成的图形面积...
  10. 今日份PS练习|油画棒效果