【学习笔记】裴蜀定理/扩展欧几里得

\(a,b\) 不全为 \(0\),且 \(a,b \in \mathbb{Z}\).
\(\exists x,y\),使 \(ax+by = \gcd(a,b)\).
不失一般性,设 \(a,b\) 非负,且 \(a \leq b\).

  1. a=0,则 \(\gcd(a,b)=b \implies x=0,y=1\).
  2. 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;
}
posted @ 2025-12-20 19:17  Harvey-zhuhy  阅读(1)  评论(0)    收藏  举报