乘法逆元与费马小定理

本文介绍费马小定理及其在求解模运算中的应用,并详细阐述了乘法逆元的概念和三种求解方法。此外,还讨论了如何利用乘法逆元解决组合数的求解问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

费马小定理:

p为质数时pow(n,p-1)%p=1;

在求解a/b%m时,可以转化为(a%(b*m))/b,转化过程如下

令k = (a/b)/m(向下取整), x = (a/b)%m;

a/b = k*m + x (x < m);

a = k*b*m + b*x;

a%(b*m) = b*x;

a%(b*m)/b = x;

乘法逆元:

[ a/b%m = (a%(b*m))/b%m ]

所有的除法取模问题都可以用这种方法,但是当b很大的时候,则会出现爆精度问题,所以引出乘法逆元,将除法取模转换为乘法取模。

b存在乘法逆元的充要条件是b与模数m互质。设令c为b在mod m时的的逆元,即b*c ≡ 1(mod m);

解释:满足同余方程,b*c和1对m的模数相同,即b*c对m取余为1(m > 1);

那么 a/b = (a/b)*1 = (a/b)*(b*c)(mod m) = a*c(mod m);

即,除以一个数对m取模等于乘以这个数的逆元对m取模;

三种求逆元的方法&:

1.逆元求解利用扩欧。
2.当m为质数的时候直接使用费马小定理,m非质数时使用欧拉函数。
3.当m为质数的时候,使用神奇的线性方法。

扩展&:

1.利用乘法逆元求解组合数及组合数的其它求法。

2.线性时间求阶乘的逆元。

自己水平不够,就站抄别人的了

https://blog.youkuaiyun.com/yo_bc/article/details/71565988。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值