[数论]线性求所有逆元的方法

前几天在看 lucas 定理的时候发现要求  1, 2,,p1modp 1, 2,⋯,p−1modp 的逆元,然后就看到了一个  Θ(n) Θ(n) 的做法发现太神了,虽然想起来是挺简单的

这个做法实际上是这样的,首先  111(modp) 1−1≡1(modp)

然后我们设  p=ki+r, r<i, 1<i<p p=k⋅i+r, r<i, 1<i<p

再将这个式子放到 modp modp 意义下就会得到

ki+r0(modp) k⋅i+r≡0(modp)

两边同时乘上  i1r1 i−1⋅r−1 就会得到

kr1+i1i1i10kr1pi(pmodi)1(modp)(modp)(modp)  k⋅r−1+i−1≡0(modp)i−1≡−k⋅r−1(modp)i−1≡−⌊pi⌋⋅(pmodi)−1(modp) 

于是就可以从前面推出当前的逆元了,代码也就一行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值