两个数求最大公约数和最小公倍数的方法和理解
发布日期:2021-05-07 17:51:40 浏览次数:12 分类:原创文章

本文共 649 字,大约阅读时间需要 2 分钟。

int GreatestCommonDivisor(int a, int b) {    int t;     if (a < b) {        // 交换两个数,使大数放在a的位置上。        t = a;        a = b;        b = t;    }     while (b != 0) {        // 利用辗转相除法,直到b为0为止。        t = a % b;        a = b;        b = t;    }     return a;} int LeastCommonMultiple(int a, int b) {    int t = a * b / GreatestCommonDivisor(a, b);    return t;}
  1. 反复a%b得到余数为0时候,就可以得到最大公约数,为什么呢,因为如下:(利用最大公约数不会超过小的那个数的性质)简单来说,被除数被分成了两坨,一坨可以被除数整除,一坨是余数,现在都可以被整除的玩意必然也可以被最后的最大公约数整除,所以只用找余数与除数的最大公因数,然后同理,余数与除数又分别成了被除数和除数,直至最后整除。
  2. 设两个数为ak bk
    k为最大公约数 则最小公倍数为abk,因为最小公倍数m的意思就是m除以ak,bk分别得到的数不能再进行约下去了,而abk/ak=b,abk/bk=a,a和b根据最大公约数定义即第一步,是不能再相约了的,因此这个abk就是最小公倍数。
上一篇:全局变量和局部变量的默认初值问题
下一篇:office2010卸载不掉解决办法

发表评论

最新留言

不错!
[***.144.177.141]2025年03月17日 23时00分19秒