乘法逆元
2016-03-26 19:39
274 查看
定义:
满足a*k≡1 (mod p)的k值就是a关于p的乘法逆元。
为什么要有乘法逆元呢?
当我们要求(a/b) mod p的值,且a很大,无法直接求得a/b的值时,我们就要用到乘法逆元。
我们可以通过求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*k≡1 (mod p)的k值就是a关于p的乘法逆元。
为什么要有乘法逆元呢?
当我们要求(a/b) mod p的值,且a很大,无法直接求得a/b的值时,我们就要用到乘法逆元。
我们可以通过求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
相关文章推荐
- 学习进度表
- 单例模式优缺点
- 【杭电-oj】-1064-Financial Management(财务管理)
- CodeForces - 581B Luxurious Houses
- 函数模板
- 修改Esxi克隆的CentOS的IP地址
- Javascript对象赋值操作
- C/C++程序题(1-5)
- DirectSound学习1
- 20145236 《Java程序设计》第4周学习总结
- (一)html基础
- 端口大全及常见攻击方式
- 德国总理对待历史
- 教你做泡泡动画
- ThinkPHP框架中遇到的若干问题手札1
- 自定义View里面的自定义属性的时候报错:Attribute "color" has already been defined
- leetcode 338:Counting Bits 数1,C++
- 【杭电-oj】-1008-Elevator(电梯)
- 单元测试
- 第五周上机实践项目——项目3-时间类-(1)