(1)最大公因数
内置函数
头文件:#include<algorithm>
函数:__gcd(a,b)
注意:a,b必须是整数,不可是浮点数
手写函数
int gcd(int a,int b){
return b?gcd(b,a%b):a;
//0与一个数的最大公约数是这个数本身
//直到b为0的时候,返回a(被除数)
}
求三个数的最大公约数
a,b,c的最大公约数
1、先求出a,b的最大公约数 d1=__gcd(a,b);
2、再求出d1,c的最大公约数 d2=__gcd(d1,c);
结果就是d2
(2)最小公倍数
已知a,b的最大公约数是d
则最小公倍数s=(a*b)/d;
求三个数的最小公倍数
a,b,c
a,b的最大公约数为d1;
a,b,c的最大公约数是d2;
(1)先求出a,b的最小公倍数
s1=(a*b)/d1;
(2)再求s1与c的最小公倍数(需先求出s1与c的最大公因数)
d3=__gcd(s1,c);
s2=(s1*c)/d3;
结果为d3
实例:3148-核桃的数量
#include<iostream>
#include<algorithm>
using namespace std;
int a,b,c;
int main(){
scanf("%d%d%d",&a,&b,&c);
int ab = a * b / __gcd(a, b);
int abc = ab * c / __gcd(ab, c);
cout<<abc<<endl;
return 0;
}
orz
orz