最大公约数和最小公倍数
GCD:最大公约数
LCM:最小公倍数
定理:两个数的乘积等于这两个数的最大公约数和最小公倍数乘积
1.GCD(辗转相除法)
#define ll long long
ll GCD(ll a, ll b)
{
if(a % b == 0) return b;
else return GCD(b, a % b);
}
辗转相除法:a, b大小无所谓除过几轮后必会变成a大b小,a%b把整除就是b,没整除就把小数给a,余数(必然比除数b小)给b,一直保持a比b大
2.LCM
#define long long ll
ll LCM(ll a, ll b)
{
return a * b / GCD(a, b);
}
另一种写法:
#define ll long long
ll LCM(ll a, ll b)
{
ll t, m;
if(a < b)
{
t = a;
a = b;
b = t;
}
m = a;
while(m % b)
m += a;
return m;