费马小定理学习整理

费马小定理学习整理

PS:费马小定理碰到了好几次了,决心在此刻把它解决。若有问题请私信或者评论区留言,我都会给予回复。


定理展示

假如 a a a是一个整数, p p p是一个质数,那么 a p − a a^p-a apa就是 a a a的倍数。我们可以记为:

a p ≡ a ( m o d p ) a^p \equiv a \pmod{p} apa(modp) ( 1 ) (1) (1)

这个式子其实就是 a p m o d    p ≡ a m o d    p a^p \mod p \equiv a \mod p apmodpamodp,如果 a a a不是 p p p的倍数的话,即 g c d ( a , p ) = 1 gcd(a,p) = 1 gcd(a,p)=1那么我们还可以写为:

a p − 1 ≡ 1 ( m o d p ) a^{p-1} \equiv 1 \pmod{p} ap11(modp) ( 2 ) (2) (2)

其中用的最多的就是 ( 2 ) (2) (2)式,为什么呢?我们两边再同时除以 a a a,即可得到 a p − 2 ≡ a − 1 ( m o d p ) a^{p-2} \equiv a^{-1} \pmod p ap2a1(modp),这个式子自然可以表示为在取余的情况下, a a a的倒数可以等价于 a p − 2 a^{p-2} ap2(这个在组合数学中用的非常多,组合问题求解 C n m C_{n}^{m} Cnm)

是不是感到很疑惑?这个费马小定理为什么可以这样?别急,我们来看证明。


定理证明

预备知识:

  • n n n不能整除 ( a − b ) (a-b) (ab),存在 x > 0 x>0 x>0,且 x x x n n n互质( g c d ( x , n ) = 1 gcd(x,n) =1 gcd(x,n)=1),那么 n n n也就不能整除 x ( a − b ) x(a-b) x(ab)
  • 完全剩余系:从模n的每个剩余类中各取一个数,得到一个由n个数组成的集合,叫做模n的一个完全剩余系。完全剩余系常用于数论中存在性证明。这个完全剩余系其实就是 { 1 , 2 , 3 ⋅ ⋅ ⋅ n − 1 } \{1,2,3···n-1\} {1,2,3n1},因为这个特性是这个完全剩余系的任意两个数对 n n n取余都不相等。

证明开始:

我们现在已知一个整数 a a a,和一个质数 p p p,其中 g c d ( a , p ) ≡ 1 gcd(a,p) \equiv 1 gcd(a,p)1。我们可以设 A A A p p p的完全剩余系,让 B = a ∗ A B=a*A B=aA,即 A A A中的每个元素都乘以 a a a,我们知道 p p p是质数,那么 A A A中的任意两个元素之差都不可能被 p p p整除,则 B B B也同样如此。集合 B = { 1 ∗ a , 2 ∗ a , 3 ∗ a ⋅ ⋅ ⋅ ( p − 1 ) ∗ a } B=\{1*a,2*a,3*a···(p-1)*a\} B={1a,2a,3a(p1)a} ( p − 1 ) (p-1) (p1)个数,我们对 p p p进行取余。得到的余数为 { r 1 , r 2 , r 3 , . . . . , r p − 1 } \{r_1,r_2,r_3,....,r_{p-1}\} {r1,r2,r3,....,rp1},这个余数其实就是 { 1 , 2 , 3 ⋅ ⋅ ⋅ p − 1 } \{1,2,3···p-1\} {1,2,3p1}重排列,因为这是因为对于任两个相异 k ∗ a k*a ka而言 ( k = 1 , 2 , 3.... ( p − 1 ) ) (k=1,2,3....(p-1)) k=1,2,3....(p1),其差不是p的倍数(所以不会有相同余数),且任一个 ∗ a *a a亦不为 p p p的倍数(所以余数不为0)。则有如下:

1 ∗ 2 ∗ 3 ∗ ⋅ ⋅ ⋅ ∗ ( p − 1 ) ≡ 1 ∗ a ∗ 2 ∗ a ∗ ⋅ ⋅ ⋅ ∗ ( p − 1 ) ∗ a ( m o d p ) 1*2*3*···*(p-1) \equiv 1*a*2*a*···*(p-1)*a \pmod p 123(p1)1a2a(p1)a(modp)

那么我们整理一下即可得到:

a p − 1 ≡ 1 ( m o d p ) a^{p-1} \equiv 1 \pmod{p} ap11(modp)


应用场景

  • 组合大数取余

    我们知道求解 C n m C_{n}^{m} Cnm为: n ! ( n − m ) ! × ( m ! ) {\frac{n!}{(n-m)!\times(m!)}} (nm)!×(m!)n!,若有个题目是这样要求的,求 C 1000 2 C^2_{1000} C10002 m o d = 1 e 9 + 7 mod=1e9+7 mod=1e9+7下的余数。我们该怎么办?我们只知道乘法间接取余不会影响结果(即 a × b m o d    p = ( a m o d    p ) × ( b m o d    p ) a\times b\mod p=(a\mod p)\times(b\mod p) a×bmodp=(amodp)×(bmodp),针对许多数相乘结果依然成立(除法运算不满足还请读者自己去思考))。那么我们就会想到进行费马小定理来转换了,即利用 a p − 1 ≡ a − 1 ( m o d p ) a^{p-1}\equiv a^{-1}\pmod p ap1a1(modp)(使用条件限制为 p p p为质数),那么我们就可以对其进行转换:

    1 ( n − m ) ! × ( m ! ) = ( ( n − m ) ! × ( m ! ) ) p − 2 ( m o d p ) {\frac{1}{(n-m)!\times(m!)}}=((n-m)!\times(m!))^{p-2}\pmod p (nm)!×(m!)1=((nm)!×(m!))p2(modp)

    那么这个结果自然可以得解。

  • 指数爆炸部分求解

    例如有一个这样的题,要你求解: 2 100 2^{100} 2100对13取余的结果。你会怎么做?直接让计算机去跑吗?又或者利用快速幂?这些都行。当然,在这里我们肯定是介绍费马小定理来解决这个问题。

    我们知道 p p p是一个质数,那么我们找到一个与 p p p互质的整数 a a a,尝试去构建 a p − 1 ≡ 1 ( m o d p ) a^{p-1}\equiv1\pmod p ap11(modp),这个自然好办,这里的底数为 2 2 2,指数为 100 100 100 m o d mod mod为13,我们则需要寻找 2 12 2^{12} 212这样的数。那么我们的步骤即是如下:

    : 2 100 ≡ 2 12 × 8 + 4 ( m o d 13 ) 2^{100} \equiv 2^{12 \times 8+4} \pmod{13} 2100212×8+4(mod13)
    : ≡ ( 2 12 ) 8 ⋅ 2 4 ( m o d 13 ) \equiv (2^{12})^8 \cdot 2^4 \pmod{13} (212)824(mod13)
    : ≡ 1 8 ⋅ 16 ( m o d 13 ) \equiv 1^8 \cdot 16 \pmod{13} 1816(mod13)
    : ≡ 16 ( m o d 13 ) \equiv 16 \pmod{13} 16(mod13)
    : ≡ 3 ( m o d 13 ) \equiv 3 \pmod{13} 3(mod13)

是不是感觉很神奇,没错,费马小定理就是这么强大,它虽然出现的比较少,但是一旦出现如果你不了解的话,可是很做出来的哦!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HeZephyr

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值