美文网首页
最大公约数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