昨天考试的时候接触到了逆元。。(还以为是个推公式的结果的题目。。
当时我连逆元这东西也不知道啊囧
然后owen在楼下搞完了又跑上来搞事情,说什么要用逆元。。
(然后之后虽然讲了课但是我太naive了听不懂,只好自己查资料)
逆元是什么呢?打个比方,(10/2)%10怎么边算边模呢?
如果这样(10%10)/(2%10)的话结果是0,但是事实上结果应该是5
所以要找出逆元。
在数学中,除以一个数等于乘以一个数的倒数,那么我们可以这样看
b/a≡b*x (mod c)(x=1/a)
但是请注意,我们要求的并不是相等的解,而是同余的解所以t可以不为1/b
而为某一个整数即x≡1/a (mod c)
可得
①ax≡1 (mod c)
然后我们看一个方程
②ax=b (mod n)
可化为(ax-b)%n=0,这也就是说ax-b是n的整数倍,也就是ax-b=ny
那么可以得方程
③ax-ny=b
其实读者很快就发现了,欧几里得算法的方程与上面所得的方程类似
但是符号不一样啊!事实上并没有关系,因为y可以为负数嘛。(感觉在说废话)
好的回过头来!
我们可以由②转换到③的过程将①转换成最终的公式
ax-cy=1
由欧几里得算法得ax-cy=gcd(a,c)
即a与c要互素,然后根据欧几里得算法,我们可以得到很多个y但是只有一个x,所以当a,c互素时x有唯一解,否则没有。