因为这个比较简单,所以先写了?
最大公约数Greatest Common Divisor(GCD)
gcd(a,b)=gcd(b,a%b)经典的辗转相除法。
你说你不懂辗转相除法?好吧
假设我们已知gcd(a,b)=x
a/b=c····d 则有a=b*c+d
因为x整数a,b所以x可以整除d,且x为b和d的最大公约数(很明显吖)
所以有gcd(a,b)=gcd(b,a%b)
//递归写法
ll gcd(ll a,ll b)
{
return b ? gcd( b , a % b ) : a ;
}
//循环写法
ll gcd(ll a,ll b)
{
ll t;
while(b)
{
t=b;
b=a%b;
a=t;
}
return a;
}
最小公倍数Least Common Multiple(LCM)
lcm(a,b)=a*b/gcd(a,b);
因为lcm(a,b)=a/gcd(a,b)*b/gcd(a,b)*gcd(a,b)