美文网首页
求两个数的最大公约数

求两个数的最大公约数

作者: twentyshaw | 来源:发表于2020-03-29 15:37 被阅读0次

1. 什么是约数

整数a除以整数b(b≠0) 除得的商正好是整数而没有余数,就将b称为a的约数。

2. 什么是最大公约数

最大公约数指两个或多个整数共有约数中最大的一个。
求数值3和数值9的最大公约数。数值3的正约数有1, 3,数值9的正约数有1, 3, 9,数值3与数值9约数交集(既存在3的约数集中,又存在9的约数集中的数的集合)为1、3。则最大公约数为3。写作gcd(3, 9) = 3。

3. 最大公约数的求法——辗转相除法

辗转相除法是以除数和余数反复做除法运算,当余数为 0 时,取当前算式除数为最大公约数的计算公式。例如,求1997与615的最大公约数:
1997 / 615 = 3 (余 152)
615 / 152 = 4(余7)
152 / 7 = 21(余5)
7 / 5 = 1 (余2)
5 / 2 = 2 (余1)
2 / 1 = 2 (余0)
所以,最大公约数为1。

4. 代码实现

从上面的辗转相除法可以看出,这一轮的除数为下一轮的被除数,这一轮的余数为下一轮的除数。所以,求num1与num2的最大公约数,我们要做的就是:
首先判断num2是否为0,若为0,则返回num1(最大公约数为num1)
若不为0,则递归调用函数,把num2作为第一个参数,num1与num2的余数作为第二个参数传进去:

function gcd(num1,num2){
    return num2===0?num1:gcd(num2,num1%num2)
}

相关文章

  • 最大公约数C++

    求两个数的最大公约数:

  • python 求最大公约数和最小公倍数

    求两个数的最大公约数和最小公倍数 求三个数的最大公约数和最小公倍数

  • 2.求两个数的最大公约数

    题目:求两个数的最大公约数 方式一:使用辗转相除法求两个数的最大公约数 具体代码如下:这里有两个问题?问题1: 为...

  • 常用的简单函数 ——求最大公约数的函数

    当计算多个数的公约数时,需要知道,前两个的最大公约数,依次和后面的数求公约数,得到的就是所有数字的最大公约数。

  • 实验十:优秀代码

    C : 递归求最大公约数 题目描述写递归函数求两个数的最大公约数优秀代码 D: 编写删除字符串中某个字符的函数--...

  • 最大公约数

    最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。 想求两个数找最大公约数是什么?...

  • 【golang】递归求最大公约数

    首先是求两个数最大公约数的数学原理:   辗转相除法, 又名欧几里德算法,是求最大公约数的一种方法。它的具体做法是...

  • 辗转相除法

    求两个数a和b的最大公约数的算法: 1、如果b等于0,计算结束,a就是最大公约数; 2、否则,计算a除以b的余数,...

  • 欧几里得算法

    欧几里得算法:辗转相除法,用来求两个数的最大公约数。【在数学里面最大公约数是没有负的定义的,所以负数是不谈最大公约...

  • 最小公倍数

    1.解题思路 可以先用辗转相除法求两个数的最大公约数,而最小公倍数 = 两数之积 / 最大公约数。 2.输入描述 ...

网友评论

      本文标题:求两个数的最大公约数

      本文链接:https://www.haomeiwen.com/subject/egkruhtx.html