美文网首页
最大公约数&最小公倍数

最大公约数&最小公倍数

作者: AdmondGuo | 来源:发表于2018-05-05 17:11 被阅读0次

    相关链接:
    常见算法:C语言求最小公倍数和最大公约数三种算法
    解析:求最大公约数的“辗转相除法原理”

    简述辗转相处法的原理:
    设有两个数A,B,如果两个数有最大公约数,设这个数为k
    则设
    A=pk,B=qk(假设A>B)

    R1=A%B也一定是k的倍数。
    同理:
    R2=B%R1的结果也是k的倍数。
    一直循环下去,直到Rn(余数)为0,此时的b就是最小公约数

    CODE:

    #include<cstdio> 
    #include<algorithm>
    using namespace std;
    
    
    int gcd(int a,int b){ //最小公约数
        if(b==0) return a;    //根据步骤此时余数已经赋值给b,所以检测b==0时得到a为最小公约数
        else return gcd(b,a%b);  
    
    }
    int lcm(int a,int b){ //最大公倍数
        return a*b/gcd(a,b);
    }
    
    int main(){
        int a,b;
        while(scanf("%d %d",&a,&b)!=EOF){
            printf("gcd = %d\n",gcd(a,b));
            printf("lcm = %d\n",lcm(a,b));
        }
        system("pause");
    
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:最大公约数&最小公倍数

          本文链接:https://www.haomeiwen.com/subject/xgmkrftx.html