每个数a均有唯一的与之对应的乘法逆元x,使得ax≡1(mod n) , 一个数有逆元的充分必要条件是gcd(a,n)=1,此时逆元唯一存在 。

逆元的含义:模n意义下,1个数a如果有逆元x,那么除以a相当于乘以x。

逆元的定义:定义:正整数 a, n,如果有 ax ≡ 1(mod n),则称 x 的最小正整数解为 a 模 n的逆元。

为什么要有乘法逆元呢?

当我们要求(a/b) mod p的值,且a很大,大到会溢出;或者说b很大,达到会爆精度。无法直接求得a/b的值时,我们就要用到乘法逆元。

求证:设k为b关于p的乘法逆元,证明(a/b)%m=(a*k)%m?

我们可以通过求b关于p的乘法逆元k,将a乘上k再模p,即(a*k) mod p。其结果与(a/b) mod p等价。

证:

根据b*k≡1 (mod p)有b*k=p*x+1。

k=(p*x+1)/b。

把k代入(a*k) mod p,得:

(a*(p*x+1)/b) mod p

=((a*p*x)/b+a/b) mod p

=[((a*p*x)/b) mod p +(a/b)] mod p

=[(p*(a*x)/b) mod p +(a/b)] mod p

//p*[(a*x)/b] mod p=0

所以原式等于:(a/b) mod p

更简单的证明:

a/b mod p =  a* (b*b^(-1) ) /b =a*b^(-1);

一、循环找解法

给定模m和需要求逆的数x,直接暴力枚举1~m-1

检查是否有x*i=1(mod m)

这种算法可以应用与写暴力、对拍、模数较小,求逆次数少的情况

时间复杂度O(m)

#include

#include

using namespace std;

int main()

{

int n,m;

cin>>n>>m;

for(int i=1;i

if(i*n%m==1) {

printf("%d\n",i);

break;

}

}

return 0;

}

二、扩展欧几里得算法

给定模数m,求a的逆元相当于求解ax=1(mod m)

这个方程可以转化为ax-my=1

然后套用求二元一次方程的方法,用扩展欧几里得算法求得一组x0,y0和gcd

检查gcd是否为1

gcd不为1则说明逆元不存在

若为1,则调整x0到0~m-1的范围中即可

( 用我自己的话解释一下,①:extgcd 目的 求 x ,y ; ②:逆元 目的 求 x;  ③: so 用extgcd 来求逆元 )

一个数有逆元的充分必要条件是gcd(a,n)=1,如果gcd(a,n)>1,则不存在逆元:比如:18 12

#include

#include

using namespace std;

int exgcd(int a,int b,int &x,int &y)

{

if(b==0) {

x=1,y=0;

return a;

}

int r = exgcd(b,a%b,x,y);

int t = x;

x = y;

y = t - a/b*y;

return r;

}

int inv(int n,int m)

{

int x,y;

int ans = exgcd(n,m,x,y);

if(ans == 1)

return (x%m+m)%m;

//定义:正整数 a, n,如果有 ax ≡ 1(mod n),则称 x 的最小整数解为 a 模 n的逆元。

else

return -1;

}

int main()

{

int n,m;

cin>>n>>m;

int ans = inv(n,m);

ans == -1 ? cout<

return 0;

}

/*

intput:

5 7

22 29

100 97

18 12

output:

3

4

65

没有逆元

*/

三、费马小定理及欧拉定理

四、O(n)求1~n逆元表

(这个写的不是很详细,具体看那个链接)

ps:

a与b对模m同余,记为a≡b(mod m)

ax≡1(mod p) 读作:a关于模p的乘法逆元。

逆元java_逆元 - 阿聊 - 博客园相关推荐

  1. logminer java_使用OracleLogminer同步Demo1Demo介绍-博客园.PDF

    使用OracleLogminer同步Demo1Demo介绍-博客园 使用Oracle Logminer 同步Demo 1 Demo 介绍 1.1 Demo 设想 前面介绍了Oracle LogMine ...

  2. Tech·Ed 2006博客园聚会

    9月22日中午,博客园的朋友在Tech.Ed会场进行了聚会.     午饭前,大家在休息区开始聚会,大家互相认识.交换名片.聊天,看到大家在一起亲切地聊天,真的很开心,然后在一起合影,合影照片请看:h ...

  3. 如果我是博客园的产品经理【下】

    题记 本来打算为博客园写一篇文章就算了 但有位园友提出了几个问题很有代表性 所以打算再就此写一篇 问题如下: 1.知识的分享应该是免费无私的 2.国外有很多高质量的开源项目,为什么不强制收费(而是采用 ...

  4. 笔记:编程的一些建议 - 时间伙伴 - 博客园

    笔记:编程的一些建议 0.今天偶然和同学聊到Eric Steven Raymond的<大教堂与集市>,想起可能会有些同学没看过,给个链接吧.http://www.yeeyan.com/ar ...

  5. 久违了我的博客园《人生的体会》

    从三月份到现在已经有很长时间没来博客园了,自已也想来看看,只是一直没时间,自已也发生了很多不愉快的事.在这段时间里发生的事情我觉得很是好玩,不过也让我体验了人生的又一大失败吧.从三月份读完我的函授,就 ...

  6. 曾经我也迷茫,你还在迷茫吗?写给像我一样的在校计算机专业学生作者:Cat_Lee 来源:博客园 发布时间:2009-05-30 20:25 阅读:1104 次 原文链接 [收藏]

    曾经我也迷茫,你还在迷茫吗?写给像我一样的在校计算机专业学生 作者:Cat_Lee  来源:博客园  发布时间:2009-05-30 20:25  阅读:1104 次  原文链接   [收藏]   无 ...

  7. 如果我是博客园的产品经理【上】

    题记 这是一个系列文章的第一篇 我打算写一个<如果我是XXX的产品经理>系列, 因为我是博客园的老用户了,这个系列又是写在博客园上的 所以先拿博客园开刀, 后面估计还会写QQ音乐,有道云笔 ...

  8. 博客园的祥和需要大家共同努力

    博客园的祥和需要大家共同努力 介绍 我经常在博客园看文章和评论,也经常留意大家给我的留言.我喜欢与大家分享和交流. 每当从与大家的交流中学到东西,有的时候也因能让大家从我的博文中有所收获, 而高兴一天 ...

  9. php是什么博客园,PHP 架构之路 - Richards - 博客园

    PHP 架构之路 - Richards - 博客园 PHP 架构之路 鉴于最近跟小伙伴聊了很多 PHP 架构发展方向的问题, 相关技术整理了一下, 也顺便规划了一下自己的 2019 年. 一. 常用的 ...

最新文章

  1. R语言使用R原生函数plot和lines可视化线图、并使用lty参数自定义线条类型、lwd自定义设置线条的粗细、col参数自定义线条颜色(Change R base plot line types)
  2. JAVA构造方法,继承关系和SUPER关键字
  3. Android Studio 常见插件收藏
  4. android studio 跨进程,Android IPC机制(三)在Android Studio中使用AIDL实现跨进程方法调用...
  5. sklearn使用小记GridSearchCV
  6. 网页嵌套:一个html嵌套到另一个html中
  7. 使用ActionSupport验证登录
  8. golang中的reflect(反射)
  9. GF系列卫星分辨率介绍
  10. 解决openwrt opkg内核版本不匹配问题
  11. linux sysctl常见用法
  12. 第35篇 网络(五)获取本机网络信息
  13. C++顺序栈的实现(进栈,出栈,判断栈空,打印输出,获取栈顶元素)
  14. 解析dwg文件圆弧段被直线化解决方案及相关可能出现的问题(AutomationException: 0x800401f5和AutomationException: 0x80040228)
  15. 南阳市区彩礼 wribao.php230.com,2021南阳彩礼钱一般给多少 河南南阳2021年结婚彩礼...
  16. 概率论与数理统计-笔记
  17. 简单介绍C++中各种指令的中文意思,适合初学者
  18. 【计算机组成原理】补天
  19. not support mysql_MYSQL(解决方法):Client does not support authentication
  20. java adt用vbox_JavaFX:动态添加的VBox没有显示出来

热门文章

  1. 数仓架构的持续演进与发展 — 云原生、湖仓一体、离线实时一体、SaaS模式
  2. 你女朋友在买买买时,程序员小哥在干嘛?
  3. 阿里云专属数据库,重新定义云数据库新形态
  4. 云服务器ECS共享标准型S6全新发布, 行业内最具性价比
  5. 优酷背后的大数据秘密
  6. 传统企业装上“智慧大脑” 看阿里巴巴如何实践AI赋能
  7. 你想知道的容器混合云问题,答案都在这里!
  8. 近7万新冠域名一半是钓鱼网站?以色列老牌安全厂商Check Point推出全端保护新战略
  9. 搞定面试算法系列 | 分治算法三步走
  10. 6.6折票仅剩3天 | BDTC 2019全日程公布,哪些是你感兴趣的话题?