辗转相除法

辗转相除法是用来求最大公因数的(例如8和12的最大公因数为4) 直接上代码:

function gcd(a,b){        
    if (b == 0){ 
        return a;     
    }
    var r = parseInt(a % b) ;      
    return gcd(b, r);    
}        

可以将a和b都看成:

最大公因数*(数1+数2+.....)

通过不断递归求余,不断将小括号里面的数变小,最后一定会有一边的数先变成1,这个时候剩下的就是:

最大公因数*1

用另一边的数求余这个得到最大公因数为0(就是if(b == 0)),这时我们就知道这个上面这个就是我们要的最大公因数了~~

 

posted @ 2017-11-21 00:07  张啊咩  阅读(264)  评论(0编辑  收藏  举报