乘法逆元
来源:互联网 发布:21cn邮箱数据哪里有卖 编辑:程序博客网 时间:2024/05/22 00:19
定义:
满足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*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
typedef long long LL ;LL exgcd(LL a,LL b,LL &x,LL &y){if( b == 0 ) {x = 1;y = 0;return a;}else{LL x1,y1;LL d = exgcd ( b , a % b , x1 , y1 );x = y1;y= x1 - a / b * y1;return d;}}
0 0
- 乘法逆元
- 乘法逆元
- 关于乘法逆元
- 乘法逆元
- 乘法逆元
- 乘法逆元
- 求乘法逆元
- 求乘法逆元
- 乘法逆元
- 乘法逆元
- 乘法逆元
- 乘法逆元
- 乘法逆元
- 乘法逆元基础知识
- 乘法逆元
- 乘法逆元
- 乘法逆元
- 乘法逆元求法
- 再探设计模式之状态模式(纸牌游戏的开发)
- 数据模型概述
- [floyd]UVa10048
- 构造函数规则总结
- Apache之——整合PHP
- 乘法逆元
- 1046. Shortest Distance (20)
- C++多态
- 黑马程序员【andriod】JAVA基础学习笔记三——JAVA的几种引用学习总结
- hibernate 的不同 join 的实际含义
- hdu 1014 Uniform Generator(数论推理)
- C# 关键字列表
- 什么是Hadoop 它能做什么
- 构建需求响应式亿级商品详情页