用递归法求两个数的最大公约数
用递归法求两个数的最大公约数
求两个数的最大公约数的思路是,用辗转现除法
辗转相除法求两个数的最大公约数的步骤如下:
先用小的一个数除大的一个数,得第一个余数;
再用第一个余数除小的一个数,得第二个余数;
又用第二个余数除第一个余数,得第三个余数;
这样逐次用后一个数去除前一个余数,直到余数是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);}
}
代码结果如下:
用递归法求两个数的最大公约数相关推荐
- Python 使用穷举法求两个数的最大公约数。
for m in range (0,2):a = int(input("请输入一个数:"))b = int(input("请输入另外一个数:"))#判断num1 ...
- C语言,枚举法求两个数的最大公约数
#include <stdio.h> /** 求a,b的最大公约数*/ int main() {//枚举法printf("Please enter two integer:\n& ...
- 编写函数求两个数的最大公约数,采用递归法计算两数的最大公约数。
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 题目: [实验案例3:函数的递归调用] 编写函数求两个数的最大公约数,采用递归法计算两数的最大公约数. [实验指导] 分析:m.n为两 ...
- c/c++求两个数的最大公约数(递归版)
** c/c++求两个数的最大公约数(递归版) ** 我们先假设 x>y gcd(x,y)为x与y的最大公约数,先假设gcd(x,y)=d, d为x和y的最大公约数,那么可以得到这样一个结论:x ...
- C:求两个数的最大公约数详解(硬核算法,辗转相除法,更相减损法)
最大公因数,也称最大公约数.最大公因子. 定义: 指两个或多个整数共有约数中最大的一个. a,b的最大公约数 记为(a,b),同样的,a,b,c的最大公约数记为(a,b,c),多个整数的最大公约数也有 ...
- python求两个数的最大公约数穷举法_五十九、如何求N个数的最大公约数和最小公倍数...
「@Author:Runsen」 ❝ 编程的本质来源于算法,而算法的本质来源于数学,编程只不过将数学题进行代码化.「---- Runsen」 ❞ 上次介绍了短除法的因式分解,下面正式进入求解:「两个及 ...
- 求两个数的最小公约数和最小公倍数
题目: 求两个数的最小公约数和最小公倍数 思路: 求最大公约数: 欧几里得在其<几何原本>中提出的欧几里得算法,有称辗转相除法, 具体做法是如果q和r分别是m除以n的商及玉树,m=nq+ ...
- Java求两个数的最大公约数及最小公倍数、求多个数的最大公约数及最小公倍数
今天参加腾讯笔试,做编程题时在最小公倍数.最大公约数这些这么简单的知识点上卡壳了,自信心受到强烈的打击,下来后猛复习了这方面的相关编程知识. 有以下几个关键点: 1.任意正整数的最大公约数.最小公倍数 ...
- 百度web前端面试题之求两个数的最大公约数和最小公倍数
求两个数的最大公约数和最小公倍数,好像是第三题, 找到如下简洁写法: <1> 用辗转相除法求最大公约数 算法描述: m对n求余传给自己,再次求余, 若余数等于0 则 n 为最大公约数 &l ...
最新文章
- 京津冀计算机学科大学排名,2021京津冀地区大学排名!北师大第3,北航第7,人大不敌天大?...
- Python入门100题 | 第055题
- Vue 进阶教程之:详解 v-model
- 【趣闻轶事】中奖252次?看“数学侦探”识破彩票猫腻
- activeMQ发送与接受消息模板代码
- DML和DDL含义和区别-一定要搞明白
- 针对 SQL Server 2008 在Windows Server 2008上的访问配置 Windows 防火墙
- MySQL高级-MySQL查询缓存优化
- fetch结合(async函数来使用)
- Carbon Copy Cloner for Mac(磁盘克隆/同步/备份工具)直装版
- Atitit 理解Monad attilax总结Atiti
- 布客·ApacheCN 编程/后端/大数据/人工智能学习资源 2022.2
- 英伟达创始人出生 | 历史上的今天
- Java实现家庭收支记账软件
- 2022年人工智能发展情况及值得关注的人工智能发展趋势
- Virtual host / experienced an error on node rabbit@XX and may be inaccessible
- 【很逗,很经典】【与靠谱IT男的浪漫闪婚记】——转个很可爱的帖子,貌似男女猪脚是咱IT人士呢...
- java代码整洁之道_【读书笔记】代码整洁之道
- PMP具体报考流程是怎样?
- tensorflow函数-tf.assign()
热门文章
- python链接sql报错_python3.7连接sqlserver数据库失败报错20002, DB-Lib error message 20002
- 致诸弟·明师益友虚心请教
- 使用icepdf将pdf转换为图片时出现乱码的问题
- 苹果手机开热点电脑/安卓手机无法链接?
- 2020-11-12杂谈
- 微信开发如何优雅的注入token(2)
- OpenCV可以识别文字吗?
- VisionPro软件介绍
- 用matlab求摆线,求由摆线x=a(t-sint),y=a(1-cost)的一拱(0≦t≦2π)与x轴所围成的图形面积...
- 今日份PS练习|油画棒效果