设有a,b两数,求他们的最大公因数和最小公倍数
最大公约数(greatest common divisor)
求最大公约数,我觉得最简单的是辗转相除法,用递归和函数相结合的形式实现,直接返回两个数的最大公约数
int gcd(int a,int b)
{
if(a%b==0)
return b;
return gcd(b,a%b);
}
最小公倍数 ( least common multiple )
公式:最大公因数 = a * b / 最小公倍数 = 两数之积除以最小公倍数
通过这个公式我们能在计算出最大公约数的前提下快速计算出最小公倍数
完整代码
#include<bits/stdc++.h>
using namespace std;
int gcd(int a,int b)
{
if(a%b==0)
return b;
return gcd(b,a%b);
}
int main()
{
int a,b;
cin>>a>>b;
cout<<gcd(a,b)<<endl; //最大公约数
cout<<a*b/gcd(a,b)<<endl;//最小公倍数
return 0;
}