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;
}
浙公网安备 33010602011771号