Teoria dos Números · Aritmética Modular
Pequeno Teorema de Fermat
aᵖ⁻¹ ≡ 1 (mod p) — a base da criptografia moderna, provada pela beleza das permutações modulares.
ap−1 ≡ 1 (mod p)
O que é congruência modular
Dizemos que a ≡ b (mod n) — lê-se "a é congruente a b módulo n" — quando n divide a diferença a − b:
100 ≡ 1 (mod 9) pois 100 − 1 = 99 = 9·11 ✓
2⁴ = 16 ≡ 1 (mod 5) pois 15 = 5·3 ✓
Prova por permutação dos restos
A prova mais elegante usa o fato de que multiplicar os restos não-nulos de 0 a p−1 por a (mod p) apenas os permuta.
- Considerar os p−1 restos não-nulos: 1, 2, 3, …, p−1.
- Multiplicar todos por a: a·1, a·2, a·3, …, a·(p−1).
Como mdc(a,p)=1, nenhum desses é divisível por p, e todos têm restos distintos entre 1 e p−1.{a·1 mod p, a·2 mod p, …, a·(p−1) mod p} = {1, 2, …, p−1}Os restos são apenas uma permutação de 1, …, p−1. - Multiplicar todos os elementos dos dois conjuntos:(a·1)·(a·2)···(a·(p−1)) ≡ 1·2···(p−1) (mod p)
aᵖ⁻¹ · (p−1)! ≡ (p−1)! (mod p) - Cancelar (p−1)!
Como mdc((p−1)!, p) = 1 (p é primo), podemos dividir ambos os lados por (p−1)!:aᵖ⁻¹ ≡ 1 (mod p) ∎
Verificações e cálculos
p = 11 (primo), a = 2, mdc(2,11)=1. Pelo teorema: 2¹⁰ ≡ 1 (mod 11).
p = 7, a = 3. Então 3⁶ ≡ 1 (mod 7). Escrever 100 = 6·16 + 4:
Se n não é primo, pode ainda acontecer aⁿ⁻¹ ≡ 1 (mod n) para algum a. Por exemplo, 2³⁴⁰ ≡ 1 (mod 341), mas 341 = 11·31 não é primo! Esses são pseudoprimos de Fermat.
Calculadora do Teorema de Fermat
Verifique aᵖ⁻¹ mod p para qualquer primo p e base a.
Impacto e Generalizações
O RSA usa diretamente o teorema de Fermat (na forma de Euler: aᵠ⁽ⁿ⁾ ≡ 1 mod n). A segurança do RSA depende de que fatorar n = p·q é difícil, mas calcular potências modulares (via Fermat) é fácil.
O teste probabilístico de primalidade mais usado em prática é baseado no Teorema de Fermat. Se aᵖ⁻¹ ≢ 1 (mod p), então p não é primo — garantido. Testando vários valores de a, obtém-se certeza quase-absoluta sobre a primalidade com O(k·log³n) operações.
Euler generalizou para qualquer n: se mdc(a,n)=1 então aᵠ⁽ⁿ⁾ ≡ 1 (mod n), onde φ(n) é a função totiente de Euler (quantidade de inteiros de 1 a n coprimos com n). Para p primo, φ(p) = p−1, recuperando Fermat.