200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 逆元超详解

逆元超详解

时间:2020-08-27 22:05:54

相关推荐

逆元超详解

目录

逆元的概念:

逆元的用处:

逆元的四种求法:

快速幂求逆元

扩展欧几里得求逆元

欧拉函数求逆元

线性递推求逆元:

逆元是什么?有什么作用?怎么求逆元呢?

逆元的概念:

如果 a * x1 (mod p) 成立,那么 x 是 a 在 mod m 的条件下的逆元注意,a和x一定都和p互质,如果不互质,则逆元不存在

逆元的用处:

计算a / b(mod p) 的值时,如果 b 是一个很大的数,那么会爆double的精度;假设除数 b 的逆元为 inv[b] ,那么可做如下转换

a / b (mod p)a * inv[b]( mod p)

把除法转变成了乘法,避免的精度的损失;为什么上述式子是等价的呢?

设 b* k = 1 (mod p) 则 k 就是 b 的逆元(即k = inv[b]) ;所以 b = (m * p +1) / k ,那么 a / b = a /( (m * p +1)/k)mod p = a * k/(m * p + 1)mod p=a * k(mod p)

如此妙哉~

逆元的四种求法:

快速幂求逆元

快速幂求逆元的前提是费马小定理的成立:

费马小定理

在模数p为素数的前提下,1 (mod p)

将费马小定理变形一下 ——》* a1 (mod p)

由此可得,a的逆元就是(mod p)

所以,用快速幂求出的结果就行了;

扩展欧几里得求逆元

传送门:扩展欧几里得

由 a * x1(mod p) 得 a*x = y0 * p +1 令y=-y0, b = p;

推出:ax + by = 1(注意:前提gcd(a,b) == 1)

然后用扩欧解方程即可,得出来的 x 就是 a 在mod p 意义下的逆元

欧拉函数求逆元

传送门:欧拉函数

欧拉定理:若 a 和 p 互素 ,设Φ(p) 为小于p且与p互素的正整数的个数,则有

则 :* a

得出就是 a 在mod p 意义下的逆元

线性递推求逆元:

递推公式:

inv[1] = 1inv[i] = (p-p/i) * inv[p%i] % p(i>=2开始递推)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。