记gcd(a,b)为a,b的最大公约数
记lcm(a,b)为a,b的最小公倍数
可知lcm=a*b/gcd,由于a*b可能过大,我们写成lcm=a/gcd*b
辗转相除法求gcd
递归写法:
1 long long gcd(long long a,long long b) 2 { 3 return b ? gcd(b, a%b) : a; 4 }
几个小公式:
gcd(ka, kb) = k * gcd(a, b)
lcm(ka, kb) = k * lcm(a, b)
lcm(S/a, S/b) = S/gcd(a, b)