美文网首页
最大公约数gcd和最小公倍数lcm

最大公约数gcd和最小公倍数lcm

作者: _Felix__ | 来源:发表于2019-08-25 04:18 被阅读0次
    // a>b; 但 不需要     若a>b则gcd(a,b)       a<b则gcd(b,a)
    int gcd(int a,int b){
        if(b == 0)  return a;
        else return gcd(b,a%b);
    }
    

    其中d为a和b的最大公约数
    最小公倍数 为ab/d 但是其有溢出的风险 所以应该改变下运算顺序 a/db 由于d是a和b的最大公约数 所以a/d 一定是可以整除的

    1081 Rational Sum (20 分)
    https://pintia.cn/problem-sets/994805342720868352/problems/994805386161274880

    int a=0,b=1;
    while(n--){
        int c,d;
        scanf("%d/%d",&c,&d);
        a = a*d+b*c;
        b = b*d;
        int t = gcd(a,b);
        a /= t; b/=t;
    }
    // 最终a与b就是分数求和的分子和分母 (numerator/denominator)
    

    相关文章

      网友评论

          本文标题:最大公约数gcd和最小公倍数lcm

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