js求最大公约数原理解析

(function(){

    function Count(a,b){

        if(b == 0){
          return a;
        }else{
            var c = a%b;
            a=b;
            b=c;
            return Count(a,b)
        }

    }

    window.Count = Count;

})();

结果:

分析:

    以上是使用辗转相除法求最大公约数.它背后的计算原理到底是什么样子呢,为什么这样几笔就能计算出最大公约数.首先我们可以明确一个规律,如果有两个数a和b,b如果为0,那么a和b的最大公约数一定是a.所以我们要想尽各种办法将两个数变成其中一个数为0的情况.假如现有两个数42和18,它们存在一个最大公约数m.42可以转化为18+24,由于42能整除m,18能整除m,那么24也能整除m.此时就可以由求42和18的公约数转换成求24和18的公约数.按照以上规则继续转换成18和6,12和6,6和6,6和0.到了此时求48和18的最大公约数就转化成了求6和0的最大公约数.

    在以上的Count函数当中a%b发挥了巨大的作用:

      1.假如a<b,a%b等于a,经过上面函数的一转换,能够保证a永远是最大值

      2.假如a>b但不整除,那么a%b就是a与b之间的差值,接下来就转换成了求b与差值之间的最大公约数

      3. 假如a能整除于b,它就直接给你转换成了求b和0的最大公约数

Count函数的整个过程就是不断的将两个数转换,直到b等于0.

发布了20 篇原创文章 · 获赞 4 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/brokenkay/article/details/101295889
今日推荐