关于逆元的初学整合

逆元的几种方法
1. 定义
正整数 a, n,如果有 ax ≡ 1(mod n),则称 x 的最小整数解为 a n
的逆元。
2. 应用
(a / b) mod n = a * b-1 mod n
3. 求解逆元
a) 扩展欧几里得
由逆元定义知 ,求 a 模 n 的逆元 x 即为求解模线性方程
ax ≡ 1(mod n)
适用条件:保证 gcd(a, n) = 1b) 费马小定理
费马小定理:
假如 p 质数,且 gcd(a,p)=1,那么 ap-1 1(mod p)
其中 ap-1 = a * a p-2 , 结合定义可以看出 x = a p-2
适用条件: p 是质数且 gcd(a, p) = 1
c) 线性求逆元
有时题目需要用到 1->p 模 p 的所有质数, p 是奇质数, 用上
面两种方法复杂度差不多都是 O(nlogn), 有一种递推关系可以线性
求出所有逆元。
inv[i] = (p p/i) * inv[p%i] % p , inv[1] = 1;
推导过程:
t = p / i, k = p % i;
t*i+ k 0 (mod p)
=> -t * i k (mod p)
两边同时除以 k*i
=> -t * k-1 i-1 (mod p)
代入 tk, 就有
inv[i] = (p p/i) * inv[p%i] % p
d) 不用逆元。 。。
通常情况下遇到 a/b mod n 的问题时,我们可以通过 a*b-1 mod n
求解, 但是只有当 gcd(b, n) = 1, b 的逆元才存在, 如果出现 gcd !=
1 的情况是如何求解。
有一个通用公式适用所有情况
x = a / b mod n = a mod (n*b) / b
推导过程:
x = (a / b) mod n
= > (a / b) = k * n + x (x < n)
= > a = k * b * n + b * x
= > a mod (b*n) = b * x
= > x = a mod (b*n) / b


乘法逆元的定义貌似是基于群给出的,比较简单地理解,可以说是倒数的概念的推广。记a的关于模p的逆元为a^-1,则a^-1满足aa^-1≡ 1(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

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值