数论-乘法逆元【裴蜀定理+欧拉定理/费马小定理】

具体逆元相关看这个博客,更详细

裴蜀定理

定义:若a,b是整数,且gcd(a,b)= d,那么对于任意的整数x,y,ax+by 都一定是 d 的倍数,特别地,一定存在整数x,y,使 ax+by = d 成立。(根据拓展欧几里得定理得出 ax + by = gcd(a,b))
这篇博客提到拓展欧几里的公式及推导
这篇也参考一下

一个重要推论是:a,b互质的充要条件是存在整数x,y使 ax+by = 1

证明这里就不详细说了,参考博客:https://blog.csdn.net/leader_one/article/details/75298966

推论
1.a,b互质的充要条件是存在整数x,y使ax+by=1
2.如果a1…an互质(不是两两互质),那么存在整数x1……xn使得x1* a1+x2* a2+…xn*an=1,反过来一样
3.方程 ax + by = 1 有解当且仅当整数a和b互质
4.一堆数情况的类同

乘法逆元

乘法逆元

若有 a*x ≡ 1 (mod m),则称 x 为a关于m的乘法逆元。
当a,m互质时,等价式为 a * x+m * y = 1 (和拓展欧几里得定理也有关)
当a,m不互质时,是没有解的,即乘法逆元不存在(裴蜀定理)

1.裴蜀定理求逆元

已知 a * x + m * y = 1 是一个二元一次方程,取模后得到:ax = 1(mod m),也就有了 x 对 m 有关于 a 的逆元。

2.欧拉定理求逆元(小费马定理)

欧拉定理中,若gcd(a,p)=1,则a^φ( p ) ≡ 1 (mod p) 这个定理的延伸小费马定理就可以求乘法逆元
因为当p为质数时φ( p ) = p-1,有费马小定理 a ^ (p-1) ≡ 1 (mod p),等价于 a*a ^ (p-2) ≡ 1 (mod p) ,则 a^(p-2) 就是对 m 关于 a 的逆元。

乘法逆元的作用
求解出了乘法逆元之后,它有什么用呢?
答案是:带除号的取模,即分数取模 (a / b) mod m
若a可以被b整除还好,直接算,但是数要是很大。。。
但是这一切问题有了乘法逆元都不存在了
设x为b关于m的乘法逆元,那么我们有a * x ≡(a / b) mod m
先来一个简单的证明:
首先(a/b) * 1 ≡(a/b) mod m是成立的,
然而 b * x ≡ 1 mod m,
所以有(a / b) * (b * x)≡ (a/b) mod m,
化简一下就有了 a * x ≡ (a/b) mod m
这样是不是分数取模问题就迎刃而解了。

这个方法就解决了 除法取模的问题,可为什么要取模呢?
因为题目给的数据范围超过 long long 型的数据规模,就需要一步计算进行一次取模。然后就涉及到了相关加减乘除运算的取模操作。
(参考有关取模的博客)

你可能感兴趣的:(数论,算法)