PREV-1 核桃的数量

思路

先求两个数的最小公倍数,再求和第三个数的最小公倍数

两个数求最小公倍数:辗转相除法求最大公约数,两个数的乘积除求出的最大公约数得到的数即为最小公倍数。

#include <iostream>

using namespace std;

int gcd(int a,int b){
    if(a%b==0)
        return b;
    else
        return gcd(b,a%b);

}

int main(){
    int a,b,c;
    cin>>a>>b>>c;
    int d=a*b/gcd(a,b);
    cout<<d*c/gcd(c,d);
    return 0;
}

借此机会练习一下欧几里得算法

以下为非递归欧几里得算法

#include <iostream>
#include <cstdio>
#include <algorithm>

using namespace std;

int gcd(int a,int b){
    int mmax=max(a,b);
    int mmin=min(a,b);
    int re;
    while(mmax%mmin!=0){
        re=mmax%mmin;
        mmax=mmin;
        mmin=re;
    }
    return mmin;
}

int main(){
    int a,b,c;
    cin>>a>>b>>c;
    int d=a*b/gcd(a,b);
    cout<<d*c/gcd(c,d);
    return 0;
}

posted @ 2021-04-08 19:07  菜菜ee  阅读(51)  评论(0)    收藏  举报