【数论-逆元】复习总结

一直想写总结类博客来着,但是拥有重度拖延症的我还是一拖再拖,不禁要感慨一下,去年暑假学的好多知识都忘得一干二净了(失忆(°Д°)?),都大二了算法还是学的一塌糊涂╮(╯_╰)╭真是罪过啊。。然鹅,不会的还是要补上嘛,哈哈

昨天复习了下扩展欧几里得和乘法逆元的知识,虽然都是基础,还是希望对以后的复习与回忆有所帮助

1.a能整除b,代表b/a=整,即a|b
同余符号 ≡
含义
两个整数a,b,若它们除以整数m所得的余数相等,则称a,b对于模m同余
记作a≡b(mod m)
读作a同余于b模m,或读作a与b关于模m同余。
比如26≡14(mod 12)。
定义
设m是大于1的正整数,a,b是整数,如果m|(a-b),则称a与b关于模m同余,记作a≡b(mod m),读作a同余于b模m。
显然,有如下事实:
(1)若a≡0(mod m),则m|a;
(2)a≡b(mod m)等价于a与b分别用m去除,余数相同。
以下性质加深理解
  1).反身性:a≡a (mod m);
  2).对称性:若a≡b(mod m),则b≡a (mod m);
  3).传递性:若a≡b(mod m),b≡c(mod m),则a≡c(mod m);
  4).线性运算:如果a ≡ b (mod m),c ≡ d (mod m),那么
    (1)a ± c ≡ b ± d (mod m);
    (2)a * c ≡ b * d (mod m)。
  5).除法:若ac≡bc(modm),c!=0,则a≡b(modm/gcd(c,m)),特殊地,gcd(c,m)=1则a≡b(modm);
  6).幂运算:如果a≡b(modm),那么a^n≡b^n(modm);

2.扩展欧几里德算法是用来在已知a, b求解一组x,y,使它们满足贝祖等式: ax+by = gcd(a, b)

3.费马小定理:假如p是质数,且gcd(a,p)=1,那么 a^(p-1)≡1(mod p)。
可以这样理解,∵a^p≡a(mod p),根据1性质5,即a^(p-1)≡1(mod p)

4.乘法逆元,是指数学领域群G中任意一个元素a,都在G中有唯一的逆元a’,具有性质a×a'=a'×a=e,其中e为该群的单位元。若ax≡1 mod f, 则称a(关于1)模f的乘法逆元为x(即x为a的逆元)。也可表示为ax≡1(mod f)。
当a与f互素时,a模f的乘法逆元有解。如果不互素,则无解。如果f为素数,则从1到f-1的任意数都与f互素,即在1到f-1之间都恰好有一个关于模f的乘法逆元。

对于利用拓展欧几里得算法求逆元,很显然,如果bx%p=1,那么 bx+py=1, 直接利用gcd(b, p, x, y),则 (x%p+p)%p(x%p+p)%p 即为 b 的逆元。

对于第二种方法,因为在算法竞赛中模数p总是质数,所以可以利用费马小定理:

 可以直接得到 b 的逆元是 b^(p−2) , 使用 快速幂 求解即可。
 

但是,逆元有什么用呢?
(a + b) % p = (a%p + b%p) %p (对)

(a - b) % p = (a%p - b%p) %p (对)

(a * b) % p = (a%p * b%p) %p (对)

(a / b) % p = (a%p / b%p) %p (错)
题目要求结果(a/b)%mod = (a%mod * b模mod的逆元)%mod
用扩欧算ax+by=c形式的乘法逆元需要乘以c/gcd(a,b),如果是求最小正乘法逆元,公式为(x%b+b)%b,结果如果为0就加上一个b

原文地址:https://www.cnblogs.com/lesroad/p/8435044.html