数论:关于逆元

不问归期 提交于 2020-02-26 14:51:04

数论:关于逆元

之前写过一篇逆元的文章,但是由于我掌握不牢,所以现在连不定方程都不会解,在此进行补充升华(buyiding)

这就是逆元的简易求法

若ax+by=1.

那么x就是a对模b的逆元,同理,y就是b对模a的逆元.

这时,就要用到Exgcd来快速求出逆元.

在此之前,逆元存在的前提是a,b互质.(如果不互质,那么等号右边就换成gcd(a,b)).

这时通过欧几里得算法,a=gcd(a,b)=1时,等式化为x=1.

也就是说1对模0的逆元是1.

我们知道a,b化为1,0时,是辗转相除的到的,那么对于任意一对a,b,满足a=bm+n.

b对模a的逆元可以分解为b对模(mb+n)的逆元.转化为yb%(mb+n)=1.

不难看出,对于mb+n的mb项,yb%mb永远不可能出现1.那么1只能通过%n得到.这时候就是b模n的逆元x0的作用.

设x0,使x0b%n=1.又因为a=mb+n,所以不光是n,y(b模a的逆元)里面还要考虑mb的问题,而mb是b的倍数,每个n会和m个b同时出现,n的数量成了解决问题的关键.(一开始,可能会想到x0b/n,但是写出公式后发现这样会出现0循环(因为x0可能为0))

引出n对模b的逆元y0.

y0n%b=1.但是我是用y个b取模(mb+n),n的数量要求n(x0b/n)(向下取整)=x0b-1,这时,就要去n和某个数的乘积%b=-1(也就是b-1).

又因为-y0n%b=b-1.

所以这里n的数量就是-y0

刚刚说到一个a有一个n,所以这也是a的数量,y0a里面一共有y0m个b.

加上一开始求的x0b%n=1.

总结一下,x0b%n=1.-y0mb%mb=0.

b对模a的逆元(y)也就是b对模n的逆元(x0)减去n对模b的逆元(b0)乘a与b的商(m)

那么怎么求出a对模b的逆元呢?

根据逆元的定义,y0n%b=1.

如此,y0a%b=y0mb%b+y0n%b=0+1=1.

a对模b的逆元(x)也就是n对模b的逆元(y0).
\[ \binom {x=y_0}{y=x_0-y_0*\frac{a}{b}(向下取整)} \]
这样就能写出递归式,从两个互质的数举例:(107,37).

(107,37)->(37,33)->(33,4)->(4,1)->(1,0)->[1,1]->[1,-3]->[-3,25]->[25,-28]->[-28,81]

所以通过这种方法,就可以求出一对互质数的逆元.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!