扩展欧几里得

阅读本文之前,请先学习裴蜀定理
扩展欧几里得算法,简称扩欧,exgcd

其实就是求 \(ax+by=gcd(a,b)\) 的特解,

求法如下:

\[ax+by=gcd(a,b)=gcd(b, amodb) \]

\[bx'+(a-⌊\frac{a}{b}⌋b)y'=gcd(b,amodb) \]

\[ax+by=ay'+b(x'-⌊\frac{a}{b}⌋y') \]

\[x=y',y=x'-⌊\frac{a}{b}⌋y' \]

还是拿161和126的例子

\[161x+126y=7=gcd(161,126) \]

\[126x'+35y'=7=gcd(35,21) \]

\[35x''+21y''=7=gcd(21,14) \]

\[21x'''+14y'''=7=gcd(14,7) \]

\[14x''''+7y''''=7=gcd(7,0) \]

\[7x'''''+0y'''''=7 \]

根据前边推出来的通解
得:

\[(-7,9),161x+126y=7=gcd(161,126) \]

\[(2,-7),126x'+35y'=7=gcd(35,21) \]

\[(-1,2),35x''+21y''=7=gcd(21,14) \]

\[(1,-1),21x'''+14y'''=7=gcd(14,7) \]

\[(0,1),14x''''+7y''''=7=gcd(7,0) \]

\[(1,0),7x'''''+0y'''''=7 \]

所以一开始的那个问题

\[123456789x+1=11y \]

就很好解决了

特解:x=2,y=22446689

通解就是想个办法给加上两个数的最小公倍数再减去

通解:

\[\begin{cases} x=2+11n,n∈Z\\ y=22446689+123456789n,n∈Z \end{cases} \]

posted @ 2022-05-21 17:57  zcxxxxx  阅读(33)  评论(0编辑  收藏  举报