乘法逆元小结

  • 什么是乘法逆元

当有 ax1(modp) 时,则 a是模 p 意义下的乘法逆元。


费马小定理求逆元


费马小定理

aap1(modp)

所以

ap21(modp)

ap2modp即可。

当且仅当 p 为质数且 a,p 互质时可用。

int ksm(int x,int k){
	int sum=1;
	while(k){
		if(k&1) sum=sum*x%p;
		x=x*x%p; k>>=1;
	}
	return sum;
}
signed main(){
	px=read(),p=read();
	ans=ksm(x,p-2);
	return 0;
}

扩展欧几里得求逆元


这个方法十分容易理解,而且对于单个查找效率似乎也还不错,比后面要介绍的大部分方法都要快(尤其对于 modp比较大的时候)。

这个就是利用拓欧求解 线性同余方程axc(modb)
c=1的情况。我们就可以转化为解 ax+by=1 这个方程。

void Exgcd(ll a, ll b, ll &x, ll &y) {
    if (!b) x = 1, y = 0;
    else Exgcd(b, a % b, y, x), y -= a / b * x;
}
int main() {
    ll x, y;
    Exgcd (a, p, x, y);
    x = (x % p + p) % p;
    printf ("%d\n", x); //x是a在mod p下的逆元
}

a,p 互质时即可用。

posted @   lxg_swrz  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示