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

辗转相除(欧几里德算法(m>n))

1、m被n除得到余数r(0≤r ≤n) r=m%n

2、若r=0,则算法结束,n为最大公约数,否则做3

3、m=n , n=r , 回到1

<!-- lang: cpp -->
    //最大公约数
int gcd(int m, int n){
     int r=0;
    while ( r=m%n )
      {     m=n;     n=r ;
        } 
      return n;
       } 
<!-- lang: cpp -->
   //最小公倍数
int lcm (int m,int n){
     return m*n/gcd(m,n);
    }  

你可能感兴趣的:(公倍数和公约数)