求最大公因数和最小公倍数

做了PTA上的L1--009

才学了这两个东西

果然打题才是促使我学习的好东西

贴一下比较喜欢的求最大公因数GCD的代码

int gcd(int a, int b){ //辗转相除
    while(a != b) {
          if(a > b) a-=b;
          else b-=a;
    }    
    return a;
}
 1 int max(int a, int b)//求最大公因数 
 2 {   //gcd(a,b) = gcd(a, a%b)
3 int r; 4 while(a&&b) 5 { 6 while(b) 7 { 8 r=a%b; 9 a=b; 10 b=r; 11 } 12 } 13 return a; 14 }
更快的求gcd的方法!

 

int gcd(int a,int b)

{

    while(b^=a^=b^=a%=b);

    return a;

}

 

然后呢

对于两个数 a b

求它们的最小公倍数的方法就是

a*b/max(a,b)

posted @ 2019-03-26 10:35  _KKcoding  阅读(265)  评论(0编辑  收藏  举报