欧几里得算法
- 最大公约数 gcd
ll gcd(ll a, ll b){
return b == 0 ? a :gcd(b, a%b);
}
C++ algorithm 库内置有
__gcd(a,b)
函数用以求最大共约数
- 最小公倍数 lcm
lcm(a,b) = a∗bgcd(a,b)\frac{a*b}{gcd(a,b)}gcd(a,b)a∗b
//先除再乘避免溢出
ll lcm(ll a, ll b){
return a/gcd(a,b) * m;
}
积性函数
f(mn)=f(m)×f(n),∀gcd(m,n)=1f(mn) = f(m) \times f(n), \forall gcd(m,n) = 1f(mn)=f(m)×f(n),∀gcd(m,n)=1