辗转相除法的应用

2018-04-12  本文已影响10人  MambaHJ

用较小数除较大数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。如果是求两个数的最大公约数,那么最后的除数就是这两个数的最大公约数。

代码:

int gcd(int ob1,int ob2){       
    int temp;
    if(ob1 < ob2){  //总是用大数对小数取模    
        temp=ob1;
        ob1=ob2;
        ob2=temp;
    }
    if(!ob2)                 //递归基
          return ob1;
    else    
          return gcd(ob1%ob2,ob2);
}

改写为更简洁的形式:

int gcd(int ob1,int ob2){
     return ob2==0? ob1:gcd(ob2, ob1 % ob2);
 }
上一篇 下一篇

猜你喜欢

热点阅读