---
# System prepended metadata

title: 費馬小定理 Fermat's little theorem
tags: [內湖高中程式競賽]

---

# 費馬小定理 Fermat's little theorem
要讀種這篇的證明，請先看看之前講過的[拉格朗日定理](https://hackmd.io/@ShanC/Lagrange-Theorem)

## 引理 1
### 敘述
若 $G$ 是一個有限群，則對於所有 $g\in G$，$|g|$ 整除 $|G|$

### 證明
因為 $\langle g\rangle\le G$，根據拉格朗日定理，$|g|=|\langle g\rangle|$ 整除 $|G|$

## 引理 2
### 敘述
對於所有 $x\in G$，$x^{|G|}=1$

### 證明
根據引理 1，$k\cdot|x|=|G|$，且根據 order 定義，$x^{|x|}=1$，因此
$$
x^{|G|}=x^{k\cdot|x|}=1^k=1
$$

## 費馬小定理
### 敘述
若 $p$ 為質數，則對於所有整數 $a$ : 

$$a^{p-1} \equiv 1 \pmod p$$

### 證明
考慮所有與質數 $p$ 互質且小於 $p$ 的整數集合，這就是模 $p$ 乘法群，記作 $(\mathbb{Z}/p\mathbb{Z})^\times$

$$G = \{1, 2, 3, \dots, p-1\}$$

在這個群中，運算方式是模 $p$ 乘法

因為 $p$ 是質數，根據質數的性質，從 $1$ 到 $p-1$ 的每一個數都與 $p$ 互質。因此，群 $G$ 的 order 為 : 

$$|G| = p - 1$$

根據引理 2，對於所有 $a \in G$：$$a^{|G|} \equiv 1 \pmod p$$將 $|G| = p-1$ 代入，我們得到：$$a^{p-1} \equiv 1 \pmod p$$

## 費馬小定理的應用 : 模逆元
### 稍微推論一下
如果 $p$ 為質數 : 
$$a^{p-1} \equiv 1 \pmod p$$
兩邊同乘 $a^{-1}$ : 
$$a^{p-2} \equiv a^{-1} \pmod p$$

### 實作
配合[快速冪](https://hackmd.io/@ShanC/Binary-Exponentiation-and-Lifting)，把程式碼加上某個質數 $p$

```cpp=
#define ll long long
int p = 1e9 + 7; // 質數
ll fpow(ll a, ll b){
    ll ret = 1;
    while(b){
        if(n & 1) ret = ret * a % p;
        a = a * a % p;
        n >>= 1;
    }
    return ret;
}
```

然後直接求 $a^{p-2} \pmod p$

```cpp=
fpow(a, p - 2);
```

這樣就可以求出逆元了

## 題目練習
[Zerojudge s093. 模逆元練習](https://zerojudge.tw/ShowProblem?problemid=s093) (我出的，裸的)

----

## 參考資料

- Dummit, Foote - Abstract Algebra, 3/e
- [Wikipedia - Fermat's little theorem](https://en.wikipedia.org/wiki/Fermat%27s_little_theorem)
- 某讀書會用的 [ppt](https://github.com/bearomorphism/math-slides/blob/86f997d124ad2656d1d6cf023a3c3ff5436c39fc/subgroups/main.pdf)

----

> [ShanC 程式競賽筆記](https://hackmd.io/@ShanC/B1ouGxqcC)
> 作者: ShanC
> 更新: 2026/2/10