逆元
逆元的解释
为什么会有逆元这个概念。
因为 有时我们需要计算 (A/B) % M 的值, 如果B过大,或者A过大,可能会爆精度,然后我们就想到能不(A%M / B%M)
发现这种方法不对,那我们可以将除法换成乘法(A *B^-1)% M 这样就能转化成 (A % M *B^-1% M)% M
所以我们就要来求B-1的值,因为不能用分数,所以我们就设定B-1为B的逆元
先设C为B的逆元,由上面可以知道由(a/b)%M,可以推出B*C=1(mod m)
则(A/B)%m = (A/B)*1%m = (A/B)*(B*C%M)%M= A*C(mod M)
即A/B的模等于A*B的逆元
还有一种更接地气的解释在此记录一下,首先我们设定一个加法取模的世界,是一个以0为中心的世界,有一个点从世界的中心加了3,然后又加了一个数使得点回到了世界中心,这个数就是逆元
然后又是一个乘法取模且中心为1的世界,有一个点从中心*3mod7,然后又突然乘了一个数让点mod7回到了世界中心,这个数就是在乘法世界mod7的逆元,这个世界没有除法,没有分数,因为3*5mod7=1,所以3mod7的一个逆元就是5,所以5和3就是在mod7的条件下互为逆元
为什么要逆元呢,因为除法是定义内会出现不可计算的情况,比如说3/5mod7,在这个世界里就变成了3*3mod7这就可以推导出公式(A/B)%p=(A*B-1)%p=(A%p*B-1%p)%p ==> 推导之后