本文搬运自本人初中博客园博客,若图片加载不出来,可到原文查看:https://www.cnblogs.com/zhangtingxi/p/15685317.html

前言

拓欧总是记不住,总是想不懂,希望写篇博客加深影响。

拓展欧几里得定理推论

求:

ax+by=gcd(a,b)\Large ax+by=\gcd(a,b)

的其中一组整数解 x,yx,y

首先可以证明必有解(留坑)

按照欧几里得定理:gcd(a,b)=gcd(b,a%b)\gcd(a,b)=\gcd(b,a\%b)

k1x+k2y=gcd(b,a%b)\Large k_1x'+k_2y'=\gcd(b,a\%b)

由于我们之前知道 ax+by=gcd(a,b)ax+by=\gcd(a,b),所以 bx+(a%b)y=gcd(b,a%b)bx'+(a\%b)y'=\gcd(b,a\%b) 也应该必有解。

由于 a%b=aab×ba\%b=a-\left\lfloor\frac{a}{b}\right\rfloor\times b

所以原式为:

bx+(aab×b)×y=gcd(b,a%b)\Large bx'+(a-\left\lfloor\frac{a}{b}\right\rfloor\times b)\times y'=\gcd(b,a\%b)

拆开:

bx+a×yab×b×y=gcd(b,a%b)\Large bx'+a\times y'-\left\lfloor\frac{a}{b}\right\rfloor\times b\times y'=\gcd(b,a\%b)

合并同类项:

ay+b(xab×y)=gcd(b,a%b)\Large a y'+b(x'- \left\lfloor\frac{a}{b}\right\rfloor\times y')=\gcd(b,a\%b)

由于 gcd(a,b)=gcd(b,a%b)gcd(a,b)=gcd(b,a\%b),看回之前的式子 ax+by=gcd(a,b)ax+by=\gcd(a,b),所以我们可以写出等式:

ay+b(xab×y)=ax+by\Large a y'+b(x'- \left\lfloor\frac{a}{b}\right\rfloor\times y')=ax+by

然后我们可以写出 x,yx,y 的其中一组解为 x=y,y=(xab×y)x=y',y=(x'- \left\lfloor\frac{a}{b}\right\rfloor\times y')

边界条件:如何 gcd(a,b)gcd(a,b)bb 为0,则 gcd(a,b)=agcd(a,b)=a,然后我们构造一组整数解为:

a×1+b×0=a=gcd(a,b).\Large a\times 1+b\times 0=a=gcd(a,b).

拓展欧几里得求逆元

前提:利用拓欧求逆元需满足 gcd(a,p)=1gcd(a,p)=1

我们知道,aa 在模 pp 意义下的逆元 xx 可以表示为:ax1(modp)ax\equiv 1\pmod p

对于我们求出的其中一组的 ax+py=gcd(a,p)ax+py=gcd(a,p),由于我们保证了 gcd(a,p)=1gcd(a,p)=1,所以 ax+py=1ax+py=1,移项得:

ax=1py\Large ax=1-py

在模 pp 意义下,axax1py1-py 相同。而 pypypp 的倍数,所以在模 pp 意义下 ax=1ax=1,即:

ax1(modp)\Large ax\equiv1\pmod p

此时 xx 即为 aa 在模 pp 意义下的逆元