关于exgcd求解不定方程警示

  • 对于式子\(ax + by = c\),首先规定\(c | gcd(a,b)\) ,我们令\(tmp = gcd(a,b)\),先解出方程\(ax + by = gcd(a,b)\)的整数解\(x_{0},y_{0}\),接着可以得到对于原式,我们有\(a\frac{x_{0}c}{gcd(a,b)} + b\frac{y_{0}c}{gcd(a,b)} = c\) ,可以令\(x_{1}=\frac{x_{0}c}{gcd(a,b)}, y_{1} = \frac{y_{0}c}{gcd(a,b)}\),接着我们考虑\(x_{1}\)\(y_{1}\)什么时候取得最小值。首先肯定有通解\(x = x_{1} + db,y = y_{1} - da\),这里让\(d\)为正数(不一定是整数)于是就变成我们要求出最小的\(db\)\(da\)值,又这两个数必须是正整数,所以很显然\(d\)\(\frac{1}{gcd(a,b)}\)时这两个值最小,进而可以求出\(x,y\)对应最小正整数值、取值个数等等问题。

  • 总结一下求解\(x\)最小正整数解步骤

  • 对于式子\(ax + by = c\)先调整符号,\(b\)一般为正整数,此时让$ a=(a mod b + b) mod b,c = (c mod b + b) mod b $(根据同余式子推的,让系数全为正方便计算)

  • 用exgcd求出方程\(ax + by = gcd(a,b)\)的解为\(x_{1}\)

  • \(x_{1} = \frac{x_{1} * c}{gcd(a,b)}\),再让\(x_{1}\)最小,即\(d = b / gcd(a,b)\),令\(x_{1} = (x_{1} mod d + d) mod d\)得到的\(x_{1}\)即为最小解

posted @ 2025-07-17 10:18  孤枕  阅读(10)  评论(0)    收藏  举报