最大公约数与最小公倍数
1、a和b的最大公约数乘以最小公倍数等于a*b
辗转相除法:
原理:
gcd(a,b)=gcd(b,a mod b) (b>0)
int gcd(int a,int b) { if(b==0) return a; else gcd(b,a%b); }
求三个数的最小公倍数,两个两个的求。
例题,蓝桥杯核桃的数量
#include<iostream> #include<cstring> #include<iomanip> #include<cmath> #include<algorithm> using namespace std; //求三个数的最小公倍数 int gcd(int a,int b) { if(b==0) return a; else gcd(b,a%b); } int main() { int p=0,q=0; int a,b,c; cin>>a>>b>>c; if(a>b) p=gcd(a,b); else p=gcd(b,a); p=a*b/p; if(p>c) q=gcd(p,c); else q=gcd(c,p); q=p*c/q; cout<<q<<endl; return 0; }