乘法逆元小结
- 什么是乘法逆元
当有 时,则 是模 意义下的乘法逆元。
费马小定理求逆元
费马小定理
所以
求 即可。
当且仅当 为质数且 互质时可用。
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;
}
扩展欧几里得求逆元
这个方法十分容易理解,而且对于单个查找效率似乎也还不错,比后面要介绍的大部分方法都要快(尤其对于 比较大的时候)。
这个就是利用拓欧求解 线性同余方程
的的情况。我们就可以转化为解 这个方程。
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下的逆元
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】