费马小定理与逆元

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/MMMMMMMW/article/details/81098068

费马小定理

假设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

猜你喜欢

转载自blog.csdn.net/MMMMMMMW/article/details/81098068
今日推荐