C++函数简单练习——求三个数的最大公约数和最小公倍数

C++函数简单练习——求三个数的最大公约数和最小公倍数

问题描述:

初学C++,刚刚学完函数,遇到一个函数的练习题,做了好长时间,处于崩溃的边缘。

img

我们记gcd()为最大公因数,mt()为的最小公倍数
你要先知道几个公式
1.gcd(a,b,c)=gcd(a,gcd(b,c))
2.mt(a,b)=a*b/gcd(a,b)
3.mt(a,b,c)=mt(a,mt(b,c))
知道这几个公式之后,发现我们只需要求出gcd(a,b)就可以知道答案
代码:

#include<iostream>
using namespace std;
int gcd(int x,int y){return y==0?x:gcd(y,x%y);}//记住这个写法,另外c++11有STL函数__gcd()用法一样
int main(){
    int a,b,c;
    cin>>a>>b>>c;
    cout<<gcd(a,gcd(b,c))<<" "<<(a*b/gcd(a,b))*c/gcd(a*b/gcd(a,b),c);//套上面的公式计算
    return 0;
}