【欧几里得定理】
定义:
- gcd ( a , b ) = gcd ( b , a m o d    b ) \gcd(a,b)=\gcd(b,a\mod b) gcd(a,b)=gcd(b,amodb)
应用:
故得到 求解gcd的辗转相除法
模板:
int gcd(int a,int b)
{
return b?gcd(b,a%b):a;
}
int lcm(int a,int b)
{
return a/gcd(a,b)*b; //这样写防止溢出
}
【拓展欧几里得】
定义:
- 已知 a , b a, b a,b求解一组 x , y x,y x,y,使它们满足贝祖等式: a x + b y = gcd ( a , b ) = d ax+by =\gcd(a, b) =d ax+by=gcd(a,b)=d(解一定存在)
推导:
已知: a x 1 + b y 1 = gcd ( a , b ) = d ax_1+by_1=\gcd(a,b)=d ax1+by1=gcd(a,b)=d —— ①
b x 2 + ( a m o d    b ) y 2 = gcd ( b , a m o d    b ) = d bx_2+(a\mod b)y_2=\gcd(b,a\mod b)=d bx2+(amodb)y2=gcd(b,amodb)=d —— ②
由欧几里得定理 gcd ( a , b ) = gcd ( b , a m o d    b ) \gcd(a,b)=\gcd(b,a\mod b) gcd(a,b)=gcd(b,amodb)