【学习笔记】裴蜀定理/扩展欧几里得
设 \(a,b\) 不全为 \(0\),且 \(a,b \in \mathbb{Z}\).
\(\exists x,y\),使 \(ax+by = \gcd(a,b)\).
不失一般性,设 \(a,b\) 非负,且 \(a \leq b\).
- a=0,则 \(\gcd(a,b)=b \implies x=0,y=1\).
- a>0,令 \(c=b \mod a\)。
找 \(x_0,y_0\) 使 \(cx_0 + ay_0 = \gcd(c,a)\).
令 \(d = \lfloor \frac{b}{a} \rfloor\),则 \(b\) 可以表示为 \(ad+c\),所以 \(c = b-ad\).
带入回去得 \((b-ad)x_0 + ay_0 = \gcd(c,a) = \gcd(a,b) = ax_0 + by_0\).
移项得 \(a(y_0-x_0d)+bx_0 = \gcd(a,b)\).
于是递归时把 \(x_0,y_0\) 换成 \(y_0-x_0d\) 和 \(x_0\) 即可。
ll exgcd(ll a,ll b){
if(b==0){
x=1,y=0;
return a;
}
ll d=exgcd(b,a%b);
ll t=x;
x=y,y=t-(a/b)*y;
return d;
}

浙公网安备 33010602011771号