当前位置: 首页 > news >正文

扩展欧几里得算法求乘法逆元

之前学过用快速幂求逆元,条件是当模数 \(p\) 为质数的时候,\(a\) 的逆元就是 \(a^{p - 2}\)
但相较于扩展欧几里得算法求逆元,适用的范围是比较小的,因为扩展欧几里得算法适用于所有逆元存在的情况。


在以下的式子中,模数为 \(m\) 的情况下,\(x\) 就是 \(a\) 的逆元

\[ax\equiv1(mod~m) \]

转化一下式子,可以得到 \(ax +ym=1\) (\(y\) 是一个新的变量)
根据线性同余方程的性质,有解的条件是\(gcd(a, m)|1\)(左边能整除右边),所以只在 \(gcd(a, m)=1\) 的时候有解
也就证得,\(a\)\(m\)互质的时候逆元有解

再复习一下扩展欧几里得算法,它可以解得 \(ax+by=gcd(a, b)\)\(x,y\) 的值
因为 \(gcd(a, m)=1\)\(ax+ym=1\)
所以只要逆元存在(要求的数与模数互质),都可以用扩展欧几里得算法求


最后
扩展欧几里得算法求逆元的方式就是

int x, y;
exgcd(a, m, x, y);
return (x % m + m) % m;
http://www.wxhsa.cn/company.asp?id=3633

相关文章:

  • redis实现缓存3-封装redis工具类
  • 高阻态
  • 鸿蒙应用开发从入门到实战(四):ArkTS 语言概述
  • 命令模式的深度解析:从标准实现到TPL Dataflow高性能架构
  • JavaWeb
  • 读书笔记:为什么数据在磁盘上的存放顺序如此重要?
  • Rcc_APBPeriphClockCmd()
  • 故障处理:ORA-19809: limit exceeded for recovery files
  • ORA-01555系列:二、ORA-01555的场景分析与解决方案
  • PySimpleGUI常用控件
  • 25.09.14 与其感慨路难行,不如马上出发
  • GCC工具链应用学习笔记
  • 初始化 MCP 环境 创建 MCP Server (一)
  • 博客园格式设置
  • [总结/备赛]备战 CSP-S 2025 初赛总结
  • win11 系统如何进行硬盘分区?固态硬盘怎么分区?SSD 固态硬盘是分区好还是不分区好?
  • 逆序数及其应用
  • 豆豆守护如何下载?
  • Java运行时jar时终端输出的中文日志是乱码
  • ZK2真空发生器日常清理
  • Nacos服务注册与发现
  • 马的遍历
  • 20231310王宏邦《密码系统设计》第1周
  • 新学期第一次随笔:慢慢学,总会有进步
  • 详细介绍:【C语言】第四课 指针与内存管理
  • 知识点错题整理
  • 202311_陇剑杯预赛_tcpdump
  • Linux学习记录(六):添加/删除用户
  • python 链式调用 合并 __setattr__ __getattribute__ in nested object()
  • 分享一个稳定好用的免费云服务——阿贝云体验