费马小定理
假设p是质数,a是整数,且a与p互质,那么,a的(p-1)次方除以p的余数恒为1,即a^(p-1) ≡ 1(mod p)。
简单表示即
if(p is prime number &&gcd(a,p) == 1)
pow(a,p-1)%p == 1 (true);
同余证法
假设p等于质数13,取整数1,2,3,4,5,6,7,8,9,10,11,12,让它们同时乘以与13互质的数,如3,得3,6,9,12,15,18,21,24,27,30,33,36,再同时余13,得3,6,9,12,2,5,8,11,1,4,7,10,可得这些从1--12都有,只是顺序不同。
从上面可得,对于质数p,他的所有余数乘以与p互质的数,整体不变,只是顺序改变。
可用反证法证明:(自己想的,不知道对不对)
设质数p的所有余数为a1,a2,a3...a(p-1),使i,j∈[1,p-1]且i ≠ j,那么取一个整数c与p互质
假设c * ai ≡ c * aj (mod p), 可化为(c mod p) * (ai mod p) ≡ (c mod p) * (aj mod p) (mod p)。
因为c与p互质,所以c mod p 不等于0,可以同时去掉 (c mod p),得ai ≡ aj(mod p),这显然不符合题意,证毕。
好了,继续上面的例子
使1,2,3,4,5,6,7,8,9,10,11,12相乘,得12的阶乘12!
使3,6,9,12,15,18,21,24,27,30,33,36相乘,取出其中的公因数3,得3^12 * 12!
联立可得
3^12 * 12! ≡ 12! (mod 13)
同时去掉12!(显然,12! mod 13不为 0),得
3^12 ≡ 1 (mod 13)
我们将3看成a,13看成p,可得费马小定理公式
a^(p-1) ≡ 1(mod p)
证毕。
逆元
已知(A/B)%M = (A * 1/B)%M = ( (A % M) * ( (1/B) % M) )% M
而(1/B)%M,一个小数怎么求余呢?反正我不知道
所以只能令H为B的逆元,则 H %M = (1/B) % M,同时除以1/B
得H * B %M = 1 % M
即H * B ≡ 1 (mod M)
用费马小定理求逆元
费马小定理公式:a^(p-1) ≡ 1(mod p)
逆元公式:H * B ≡ 1 (mod M) -->这里假设M为质数,由公式显然B与M互质
其中M = p,B = a
联立可得H * a ≡ a^(p - 1)(mod p)
同时除以a(显然a mod p 不为0)
最终得B(或者a)关于p的逆元
H ≡ a^(p - 2)(mod p)
逆元还可以通过拓展欧几里得算法求得,不过相比费马小定理来说,要比较麻烦。
详细可看:https://blog.csdn.net/MMMMMMMW/article/details/81071927