Números Inteiros e Criptografia RSA
Números Inteiros e Criptografia RSA
Agradeço a meus pais, Marcos e Ester Fabossi, que sempre priorizaram minha educação e me
deram as condições necessárias para seguir minha vida escolar.
Também agradeço ao meu orientador, Prof. Dr. Tomas Edson Barros, que contribuiu de
maneira significativa para a realização deste trabalho e para minha formação, de modo geral.
Finalmente, agradeço a cada professor de Matemática que tive durante toda minha vida esco-
lar. Cada um deles me influenciou para que seguisse pelos caminhos da Matemática. Agradeço
de maneira especial a dois desses professores: Profa. Maria Ângela, que incentivou meu gosto
pela Matemática ao propiciar minha participação em olimpı́adas e maratonas de Matemática; e
Prof. Chico Nery, o qual foi e ainda é meu maior mestre, decisivo nas minhas escolhas por um
curso de Graduação em Matemática e pela carreira docente, e do qual hoje tenho o prazer de ser
amigo pessoal e de trabalho.
Resumo
Quando ouvimos falar de criptografia, associamos esse conceito a filmes policiais e de guerra,
onde mensagens secretas são codificadas e decodificadas. No entanto, a abrangência desse ramo
do conhecimento é muito maior que isso. Dentre as diversas aplicações da criptografia destaca-se
a proteção de informações bancárias e comerciais que transitam entre computadores numa rede.
Para a confecção deste texto, estudamos os principais conceitos de teoria dos números, neces-
sários para o entendimento de um dos métodos criptográficos mais populares atualmente, o RSA.
A bibliografia adotada se preocupa mais em focar certos algoritmos para determinação de primos
e outros elementos de teoria dos números, no entanto, buscamos demonstrar todos os resultados
relevantes de forma rigorosa.
Como recomendação da banca avaliadora do TCC A, estudamos o algoritmo AKS, tendo como
base [04]. Entretando, fizemos apenas alguns comentários, relacionando o AKS com o sistema
RSA, não descrevendo no presente texto os detalhes estudados.
Conteúdo
Introdução xi
2 Fatoração Única 15
2.1 Teorema Fundamental da Aritmética . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2 Algoritmos de Fatoração . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3 Números Primos 25
3.1 Fórmulas Polinomiais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.2 Fórmulas Exponenciais: Mersenne e Fermat . . . . . . . . . . . . . . . . . . . . . 27
3.3 Fórmulas Fatoriais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4 Aritmética Modular 37
4.1 Relações de Equivalência . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.2 Inteiros Módulo n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.3 Aplicações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.3.1 Critérios de Divisibilidade . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.3.2 Potências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.3.3 Equações Diofantinas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.4 Divisão Modular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5 Fermat e Primalidade 51
5.1 Pequeno Teorema de Fermat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.2 Contando Raı́zes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
5.3 Pseudoprimos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.4 Números de Carmichael . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
ix
6 Sistemas de Congruências 69
6.1 Equações Lineares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
6.2 Congruência Módulo Números Não Primos Entre Sı́ . . . . . . . . . . . . . . . . . 74
6.3 Potências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
6.4 Partilha de Senhas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
O presente texto é resultado de trabalho durante o ano de 2012, referente às disciplinas Trabalho
de Conclusão de Curso A e Trabalho de Conclusão de Curso B.
Desde que entrei na Graduação em Matemática, eu já tinha a intenção de estudar de maneira
mais sistemática a Teoria dos Números. Logo no primeiro perı́odo do curso, tive a disciplina
“Introdução à Teoria dos Números”. Essa disciplina só aumentou meu interesse nessa área da
Matemática. Na hora de escolher o assunto para desenvolvimento do trabalho de conclusão de
curso, não tive dúvidas em escolher a Teoria dos Números como tema central do trabalho.
Neste trabalho, iremos apresentar a Matemática que fundamenta um dos métodos criptográficos
mais populares atualmente, o RSA.
No primeiro capı́tulo veremos o teorema da divisão euclidiana, que justifica o funcionamento
do algoritmo de Euclides, que por sua vez nos permite calcular o máximo divisor comum de dois
inteiros a e b; na sequência veremos o algoritmo euclidiano estendido, que além de calcular o
mdc(a, b) também nos fornece uma maneira de escrever este mdc como combinação linear de a e b.
Veremos também como este algoritmo nos auxilia na resolução de equações diofantinas lineares.
No capı́tulo 2, abordamos o Teorema Fundamental da Aritmética, ou Teorema da Fatoração
Única. Tendo demonstrado que um inteiro positivo n ≥ 2 admite uma única maneira de ser escrito
como produto de primos, veremos alguns algoritmos que nos permitem fatorar um inteiro a dado.
√
Em particular, estudaremos o algoritmo de Fermat, que procura fatores de a próximos à a.
Finalizaremos o capı́tulo vendo uma propriedade fundamental dos primos: se um primo p divide
o produto ab, então p divide a ou b. Tal propriedade será importante nos capı́tulos posteriores.
No Capı́tulo 3 nos voltaremos para os números primos, estudando algumas tentativas que tive-
mos na história de encontrar fórmulas que gerassem primos. Estudaremos rapidamente fórmulas
polinomiais e fórmulas fatoriais, mas vamos nos deter por mais tempo nas fórmulas exponenciais,
estudando os números de Fermat e, principalmente, os números de Mersenne. Em relação a estes
últimos, estudaremos sua relação com os números perfeitos, relação esta estudada desde a Grécia
com Euclides; veremos que todo número perfeito par é da forma 2n−1 (2n − 1), onde o número
2n − 1 é um primo de Mersenne. Finalmente, remontaremos a demonstração feita por Euclides da
existência de infinitos primos.
No capı́tulo 4 revisaremos rapidamente os conceitos básicos de relações de equivalência e estu-
daremos a relação de congruência módulo n nos inteiros, cujo conjunto quociente é denotado por
Zn . Veremos algumas aplicações do conceito de congruência, como demonstrar critérios de divisi-
xi
Capı́tulo 0 Introdução
xii
Introdução Seção 0.0
• Sendo x ∈ R, denotamos por [[x ]] a parte inteira de x, ou seja, [[x ]] é o maior inteiro que é
menor ou igual a x.
xiii
Capı́tulo
1
Algoritmo da Divisão de Euclides e
Divisibilidade
1
Capı́tulo 1 Algoritmo da Divisão de Euclides e Divisibilidade
1. Se b = 1, basta tomar q = 1 e r = 0.
2. Se b > 1, basta tomar q = 0 e r = 1.
Em ambos os casos as relações (1.1) estão satisfeitas.
Suponha agora, como hipótese de indução, que para a = k, k ≥ 1, existam inteiros q e r
satisfazendo
k =b·q+r e 0≤r<b
a = k + 1 = b · q 0 + r0 , com 0 ≤ r0 < b
2. Se r + 1 = b, temos
k + 1 = b · q + b = b · (q + 1) = b · q 0 + r0
a = b · q 1 + r1 e 0 ≤ r1 < b
a = b · q 2 + r2 e 0 ≤ r2 < b
Das desigualdades acima temos que 0 ≤ r1 < b e −b < −r2 ≤ 0, e somando essas desigualdades
obtemos
−b < r1 − r2 < b ⇔ 0 ≤ |r1 − r2 | < b
e isso nos leva a 0 ≤ |q2 − q1 | · b < b, e como b 6= 0, podemos escrever 0 ≤ |q2 − q1 | < 1, o que só é
possı́vel se q1 = q2 . Esta última igualdade nos leva imediatamente a concluir também que r1 = r2 .
Portanto, q e r satisfazendo (1.1) são únicos.
Os números q e r, cuja existência foi garantida pelo teorema anterior, são chamados de quociente
e resto da divisão euclidiana de a por b, respectivamente.
DEFINIÇÃO 1.1.2. Um número inteiro b divide outro número inteiro a se existe um terceiro inteiro
2
O Algoritmo de Euclides Seção 1.2
c tal que
a = b · c.
4. 0 não é divisor de nenhum outro inteiro, a não ser do próprio zero, pois b 6= b · 0 = 0
a = bg + s. Então
mdc(a, b) = mdc(b, s) (1.2)
3
Capı́tulo 1 Algoritmo da Divisão de Euclides e Divisibilidade
e isto significa que d1 |s. Se d1 |b e d1 |s, temos que d1 ≤ d2 , pois d2 = mdc(b, s).
2. Agora, se d2 = mdc(b, s), então d2 |b e d2 |s, ou seja, existem inteiros p e q tais que b = pd2 e
s = qd2 . Obtemos assim,
a = pd2 · g + qd2 = d2 (pg + q)
ou seja, d2 |a. Desse modo, d2 |a e d2 |b, e portanto d2 ≤ d1 , já que d1 = mdc(a, b).
Sendo assim, se d1 ≤ d2 e d2 ≤ d1 , concluı́mos que d1 = d2 .
DEMONSTRAÇÃO. Por hipótese, r1 ≥ r2 , e pela definição de rk+1 , para k ≥ 2 temos rk+1 < rk .
Seja S o conjunto formado pelos naturais r1 , r2 , · · · . Note que S ⊂ N e S 6= ∅. Pelo princı́pio da
boa ordenação dos Naturais, S possui um menor elemento, que denotaremos por rn+1 . Afirmamos
que rn+1 = 0. De fato, se tivessemos rn+1 6= 0, poderiamos definir um rn+2 , que seria o resto da
divisão de rn por rn+1 , o que nos leva à 0 ≤ rn+2 < rn+1 , o que contradiz o fato de rn+1 ser o
menor elemento de S.
Agora estamos em condições de demonstrar o seguinte
r1 , r2 , r3 , · · ·
DEMONSTRAÇÃO. Cada rk , k ≥ 3, é o resto da divisão de rk−2 por rk−1 . Pelo Lema 1.2.2, temos
4
Algoritmo Euclidiano Estendido Seção 1.3
Portanto
rn = mdc(0, rn ) (rn+1 = 0)
= mdc(rn , rn−1 ) (pelo Lema 1.2.3)
= mdc(rn−1 , rn−2 )
···
= mdc(r3 , r2 )
= mdc(r2 , r1 )
= mdc(a, b)
Assim, para encontrarmos o máximo divisor comum de dois inteiros a e b, iniciamos dividindo
a por b (1) . Essa primeira divisão nos dará um resto r1 . Agora dividimos b por r1 , o que nos
dará um resto r2 . Em seguida, dividimos r1 por r2 , o que nos dará um resto r3 . Continuamos
efetuando essas divisões até encontrarmos um resto nulo. O último resto não-nulo (que tabmém é
o quociente da divisão de resto nulo) é o máximo divisor comum de a e b.
Note que se a é um múltiplo de b, quando dividirmos a por b já encontraremos resto zero.
Logo, o mdc de a e b é o próprio b, que é o quociente da última (e única) divisão do processo.
O Algoritmo Euclidiano nos permite calcular o mdc de dois inteiros a e b, mas isso não é tudo,
ele nos diz mais.
5
Capı́tulo 1 Algoritmo da Divisão de Euclides e Divisibilidade
Pelo Princı́pio da Boa Ordenação dos Naturais, o conjunto A possui um elemento mı́nimo
d = ma + nb. Vamos mostrar que esse elemento mı́nimo d é o mdc(a, b).
Pelo algoritmo da divisão, existem inteiros q e r tais que
a=d·q+r e 0≤r<d
Podemos escrever r = a − dq = a − (ma + nb)q = a(1 − mq) − b(nq), logo r é uma combinação
linear de a e b, e 0 ≤ r < d. Como d é a menor combinação linear positiva de a e b, temos que
r = 0, ou seja, d|a.
De modo análogo concluı́mos que d|b. Agora, para que d seja o máximo divisor comum de a e
b, precisamos mostrar que para qualquer inteiro c tal que c|a e c|b temos que c ≤ d. Seja então c
um inteiro divisor de a e de b.
Se c ≤ 0 nada temos a demonstrar por d ∈ A, logo d > 0. Suponha então que c > 0. Como
c|a e c|b, existem inteiros p e q tais que a = pc e b = qc. Se tomarmos uma combinação linar de a
e b, teremos
ma + nb = mpc + nqc = (mp + nq) · c ⇒ c|(ma + nb)
ou seja, se c|a e c|b, então c divide qualquer combinação linear de a e b. Mas d é uma combinação
linear de a e b, logo c|d.
Como d > 0, temos que c ≤ d, logo
d = mdc(a, b)
Tendo demonstrado esta caracterização do mdc(a, b), o seguinte corolário imediato nos será
útil no estudo que se segue.
COROLÁRIO 1.3.2. Sejam a e b inteiros positivos e seja d o máximo divisor comum entre a e b.
Existem inteiros α e β tais que
α·a+β·b=d
Observamos que tais α e β não são únicos, pois se α e β são inteiros que satisfazem o corolário
anterior, então os inteiros α + kb e β − ka também satisfazem, sendo k um inteiro qualquer.
Vale também comentar que a recı́proca deste corolário não é verdadeira, exceto em um caso
particular. Sendo a e b dois inteiros, se existirem outros dois inteiros α e β tais que aα + bβ = c,
não podemos afirmar que c é o máximo divisor comum entre a e b, a não ser que tenhamos c = 1,
pois neste caso temos a menor combinação linear positiva possı́vel.
6
Algoritmo Euclidiano Estendido Seção 1.3
91 35 35 21 21 14 14 7
21 2 14 1 7 1 0 2
91 = 35 · 2 + 21 35 = 21 · 1 + 14 21 = 14 · 1 + 7 14 = 7 · 2 + 0
O último resto não nulo é 7, logo mdc(91, 35) = 7. Agora, para escrevermos 7 como combinação
linear de 91 e 35, isolamos os restos das primeiras e substinuindo nas subsequentes.
91 = 35 · 2 + 21 ⇒ 21 = 91 − 2 · 35 (1.3)
35 = 21 · 1 + 14 ⇒ 14 = 35 − 21 (1.4)
21 = 14 · 2 + 7 ⇒ 7 = 21 − 2 · 14 (1.5)
Assim,
7 = mdc(35, 91) = −8 · 35 + 3 · 91.
Pode parecer que para encontrarmos uma combinação linear de a e b que seja igual a mdc(a, b),
precisamos primeiramente efetuar todas as diviões, para depois utilizarmos os resto e quocientes
obtidos. Isso até pode ser feito, mas dependendo da quantidade de divisões pode ser muito
trabalho, ou impraticável do ponto de vista computacional. Mas há uma outra maneira de im-
plementarmos o algoritmo euclidiano estendido, inventada por D.E. Knuth. A implementação se
baseia em guardar cada um dos restos obtidos na sequência das divisões em termos de a e b sem
esperar chegar ao último resto. Dessa forma, precisamos armazenar apenas os dados referentes às
duas divisões imediatamente anteriores.
Se fizermos as divisões sucessivas até encontrarmos um resto nulo, teremos a seguinte sequência
7
Capı́tulo 1 Algoritmo da Divisão de Euclides e Divisibilidade
de divisões.
a = bq1 + r1 e 0 ≤ r1 < b
b = r1 q2 + r2 e 0 ≤ r2 < r1
r1 = r2 q3 + r3 e 0 ≤ r3 < r2
r2 = r3 q4 + r4 e 0 ≤ r4 < r3
.. ..
. .
rn−3 = rn−2 qn−1 + rn−1 e 0 ≤ rn−1 < rn−2
rn−2 = rn−1 qn e rn = 0
onde os números x1 , ..., xn−1 e y1 , ..., yn−1 são inteiros a determinar. Podemos resumir as infor-
mações de (1.7) em uma tabela.
restos quocientes x y
a * x−1 y−1
b * x0 y0
r1 q1 x1 y1
r2 q2 x2 y2
r3 q3 x3 y3
.. .. .. ..
. . . .
rn−2 qn−2 xn−2 yn−2
rn−1 qn−1 xn−1 yn−1
Note que acrescentamos duas linhas que não correspondem a nenhuma divisão; de fato, a e
b não são restos. Chamaremos essas duas primeiras linhas de −1 e 0. Logo veremos porque são
8
Algoritmo Euclidiano Estendido Seção 1.3
necessárias. Note que rn−1 = axn−1 + byn−1 . Mas rn−1 = mdc(a, b), portanto xn−1 e yn−1 são os
inteiros α e β que procuramos para escrever mdc(a, b) = αa + βb. Portanto, precisamos apenas
saber como preencher as colunas x e y.
Suponha que já tenhamos preenchido a tabela até certo ponto, por exemplo, até a
(j − 1)-ésima linha. Precisamos descobrir quais são os inteiros rj , qj , xj e yj . Para determinarmos
rj e qj , basta dividirmos rj−2 por rj−1 . Desse modo, teremos rj−2 = rj−1 qj + rj e 0 ≤ rj < rj−1 .
Estão determinados, então, rj e qj .
Para encontrarmos xj e yj , primeiro observe que
Veja que para calcularmos xj e yj , usamos apenas valores contidos nas duas linhas imediata-
mente anteriores à linha j, além do queociente qj . Portanto, sabemos preencher qualquer linha
da tabela se conhecermos as duas linhas anteriores. E mais, nosso processo de preenchimento é
recursivo, logo, só precisamos saber como iniciá-lo. É nesse ponto que as duas primeiras linhas
nos ajudam.
Interpretando estas linhas como as demais, devemos ter:
x−1 = 1 , y−1 = 0 , x0 = 0 e y0 = 1
e com esses valores podemos iniciar o processo recursivo de preenchimento da tabela. Ao final do
processo, teremos encontrado d = mdc(a, b).
d = rn−1 = aα + bβ
9
Capı́tulo 1 Algoritmo da Divisão de Euclides e Divisibilidade
aqui nos auxilia na resolução de equações diofantinas lineares. Uma equação diofantina linear à n
incógnitas é uma sentença do tipo
a1 x 1 + a2 x 2 + · · · + an x n = b (1.9)
onde a1 , ..., an , b são números inteiros. Em se tratando de equações diofantinas, lineares ou não,
sempre estamos procurando soluções inteiras, ou seja, as incógnitas x1 , ..., xn só assumem valores
no conjunto Z. Vamos tratar apenas de equações diofantinas lineares à 2 incógnitas, pois qualquer
equação com mais incógnitas pode ser reduzida a este caso. A tı́tulo de exemplo, considere a
equação diofantina linear à 3 incógnitas
Fazemos 10y + 25z = 5k (escolhemos 5 porque 5 = mdc(10, 25)). Daı́, a equação original se reduz
à x + 5k = 99. Portanto, ao invés de resolvermos uma equação à 3 incógnitas, resolveremos 2
equações a 2 incógnitas. Para mais detalhes ver [10].
Primeiramente, vamos ver qual uma condição necessária e suficiente para que a equação
ax + by = c admita solução inteira.
PROPOSIÇÃO 1.3.3. A equação ax + by = c admite solução inteira se, e somente se, mdc(a, b)
dividir c.
ax0 + by0 = c.
Seja d = mdc(a, b). Como d|a e d|b, temos que d divide qualquer conbinação linear de a e b. Em
particular, d divide ax0 + by0 , ou seja, d|c.
(⇐) Sendo d = mdc(a, c), temos que d é a menor combinação linear positiva de a e b.
Temos por hipótese que d|c, isto é, existe um inteiro c0 tal que c = dc0 . Multiplicando a equação
(1.10) por c0 temos
c = dc0 = a(x0 c0 ) + b(yo c0 )
10
Algoritmo Euclidiano Estendido Seção 1.3
a b
Seja a0 = e b0 = . Note que a0 e b0 são inteiros pois d|a e d|b. Considere, agora, a equação
d d
reduzida a0 x + b0 y = c0 .
Afirmamos qualquer solução da equação original é também solução da equação reduzida, e
vice-versa. De fato, se (x0 , y0 ) é uma solução da equação reduzida, temos
a b
1 = r + s.
d d
a b
Mas = a0 e = b0 , ou seja, a0 e b0 são primos entre sı́, portanto existem inteiros α e β, que
d d
podem ser determinados usando-se o algoritmo euclidiano estendido, tais que
a0 α + b 0 β = 1
a0 c 0 α + b 0 c 0 β = c 0
ou seja, (c0 α, c0 β) é uma solução da equação reduzida, e portanto, é uma solução da equação
original
ax + by = c.
Como os inteiros α e β não são únicos, segue que a solução da equação diofantina linear também
não é única. De fato, se (x0 , y0 ) é uma solução particular de ax + by = c, então (x0 + bt, y0 − at)
também é uma solução, t ∈ Z, pois
a(x0 + bt) + b(y0 − at) = ax0 + abt + by0 − abt = ax0 + by0 = c
Com isso, também concluı́mos que quando ax + by = c admite soluções, estas são em quantidade
infinita, pois cada t inteiro gera uma solução diferente.
Vamos encerrar com um exemplo. Vamos resolver 4x + 6y = 10.
Como mdc(4, 6) = 2 divide 10, a equação admite solução. Primeiramente, encontremos a
equação reduzida, dividindo a original por 2.
2x + 3y = 5
11
Capı́tulo 1 Algoritmo da Divisão de Euclides e Divisibilidade
Agora, encontramos uma solução particular desta equação. Utilizando o algoritmo euclidiano
estendido, obtemos
2 · (−1) + 3 · (1) = 1
2 · (−5) + 3 · (5) = 5
logo, (−5, 5) é uma solução particular da equação reduzida e também da equação original. Daı́,
as soluções de 4x + 6y = 10 são dadas por
(
x = −5 + 6t
(t ∈ Z)
y = 5 − 4t
Terminamos este primeiro capı́tulo com mais algumas propriedades relacionadas à divisibilidade
e ao mdc.
PROPOSIÇÃO 1.3.4. Se n, a, b são inteiros positivos, então mdc(na, nb) = n · mdc(a, b).
DEMONSTRAÇÃO. Seja d = mdc(a, b). Então d|a e d|b, ou seja, a = rd e b = sd, para certos inteiro
r e s. Multiplicando as últimas igualdades por n, obtemos na = r(nd) e nb = s(nd), ou seja nd|na
e nd|nb. Assim temos que nd é um divisor comum de na e nb. Resta mostrar que nd é o maior
deles.
Seja x ∈ Z+ tal que x|na e x|nb. Como d = mdc(a, b) existem inteiros α e β de modo que
d = aα + bβ, o que implica naα + nbβ = nd. Como x|na e x|nb, x divide qualquer combinação
linear de na e nb. Em particular, x|(naα + nbβ) = nd, portanto x ≤ nd. Assim temos que
nd = mdc(na, nb) ∴ mdc(na, nb) = n · mdc(a, b)
PROPOSIÇÃO 1.3.5. O mdc é associativo, isto é, dados três inteiros a, b, c, temos que
• d1 = max(Da ∩ (Db ∩ Dc ))
• d2 = max((Da ∩ Db ) ∩ Dc )
• d3 = max(Da ∩ Db ∩ Dc )
12
Algoritmo Euclidiano Estendido Seção 1.3
Da ∩ (Db ∩ Dc ) = (Da ∩ Db ) ∩ Dc = Da ∩ Db ∩ Dc
e portanto d1 = d2 = d3 .
PROPOSIÇÃO 1.3.6. Sejam b1 e b2 inteiros primos entre sı́, isto é, mdc(b1 , b2 ) = 1. Então d é
um divisor de b1 b2 se, e somente se, d = d1 d2 , onde d1 = mdc(d, b1 ) e d2 = mdc(d, b2 ).
(⇒) Para demonstrarmos que se d|b1 b2 , então d = mdc(d, b1 ) mdc(d, b2 ), faremos uso das
duas proposições anteriores. Sendo d1 = mdc(d, b1 ), d2 = mdc(d, b2 ), d um divisor de b1 b2 e
mdc(b1 , b2 ) = 1, temos
P rop.1.3.4
d1 d2 = d1 · mdc(d, b2 ) = mdc(d · d1 , b2 · d1 )
= mdc(d · d1 , b2 · mdc(d, b1 ))
P rop.1.3.4
= mdc(d · d1 , mdc(db2 , b1 b2 ))
d|b1 b2
= mdc(d · d1 , mdc(db2 , dm)) para algum m ∈ Z.
P rop.1.3.4
= mdc(d · d1 , d · mdc(b2 , m))
P rop.1.3.4
= d · mdc(d1 , mdc(b2 , m))
= d · mdc(mdc(d, b1 ), mdc(b2 , m))
P rop.1.3.5
= d · mdc(d, b1 , b2 , m)
P rop.1.3.5
= d · mdc(d, m, mdc(b1 , b2 ))
= d · mdc(d, m, 1) = d · 1
= d
13
Capı́tulo 1 Algoritmo da Divisão de Euclides e Divisibilidade
14
Capı́tulo
2
Fatoração Única
Por que os números primos se chamam números primos? Com certeza não é por que seus
pais são irmãos. Na verdade, os gregos dividiam os números em primeiros (ou indecomponı́veis)
e secundários (ou compostos). Os números compostos são assim chamados por serem formados
a partir dos primeiros. Os romanos traduziram literalmente a palavra grega para primeiro, que
em latim é primus. Daı́ a origem dos nossos números primos. Neste capı́tulo vamos ver como os
números primos funcionam como partı́cula elementar na construção de qualquer inteiro.
Uma primeira pergunta que nos vem quando nos deparamos com essa definição é: por que 1
e −1 não são classificados nem como primos nem como compostos? Antes de respondermos tal
pergunta, vejamos o enunciado do Teorema Fundamental da Aritmética.
TEOREMA 2.1.2 (Teorema Fundamental da Aritmética). Todo inteiro positivo n ≥ 2 pode ser
escrito na forma
n = p1 · p2 · ... · pk
para certos primos p1 , p2 , ..., pk com k ≥ 1 e p1 ≤ p2 ≤ ... ≤ pk . Além disso, os fatores primos
satisfazendo essas condições são únicos, isto é, se q1 , q2 , ..., qj são também primos positivos com
q1 ≤ q2 ≤ ... ≤ pj e n = q1 · q2 · ... · qj , então j = k e p1 = q1 , p2 = q2 , ..., pk = qk .
15
Capı́tulo 2 Fatoração Única
Agora, seja k ≥ 2 e suponha como hipótese de indução que todo inteiro n, 2 ≤ n ≤ k, seja
primo ou possa ser escrito como produto de fatores primos. vamos mostrar que k + 1 é primo ou
se escreve como produto de primos.
Considere, então, o inteiro k + 1.
i) se k + 1 é primo, nada mais temos a demonstrar.
ii) se k + 1 não é primo, então possui um fator (divisor) a, diferente de ±1 e de ±(k + 1), ou
seja,
k+1=a·b
DEMONSTRAÇÃO. (1) Se a e b são primos entre sı́, existem inteiros r e s tais que
ra + sb = 1
logo
rac + sbc = c.
Como, por hipótese, a|bc então a|sbc também. É claro que a|rac. Mas se a divide dois inteiros,
ele também divide qualquer conbinação linear desses dois inteiros. Portanto a|(rac + scb), ou seja
a|c.
(2) Se a divide c, existe um inteiro r tal que c = ar. Mas b também divide c. Como a e b são
primos entre sı́, segue da primeira parte deste lema que b divide r, ou seja, existe um inteiro s tal
que r = bs. Portanto
c = ar = a(bs) = (ab)s
ou seja, ab divide c.
PROPOSIÇÃO 2.1.4. Sejam a e p inteiros, sendo p um números primo positivo. Então, a não é
divisı́vel por p se, e somente se, a e p forem primos entre sı́.
16
Teorema Fundamental da Aritmética Seção 2.1
PROPOSIÇÃO 2.1.5. Sejam a, b e p inteiros, com p primo. Se p|ab, então p|a ou p|b (nada impede
que p divida tanto a quanto b).
DEMONSTRAÇÃO. Temos que p|a ou p 6 |a. Se p|a, a proposição está demonstrada. Agora, se p 6 |a,
pela Proposição 2.1.4 a e p são primos entre sı́. Como p|ab, então, pela Proposição 2.1.3, temos
que p|b.
A Proposição anterior pode ser estendida para um produto de n inteiros.
DEMONSTRAÇÃO. Faremos uma indução sobre n. Para n = 2 já está feito na Proposição 2.1.5.
Hipótese de indução: Se p é primo e p divide um produto de k fatores inteiros, então p divide
ao menos um dos fatores.
Considere agora um produto de k + 1 inteiros e suponha que p|a1 · ... · ak · ak+1 . O número
s = a1 · ... · ak é um inteiro, e temos que p|s · ak+1 . Pela Proposição 2.1.5, p|s ou p|ak+1 . Logo p|aj
para algum j ∈ {1, 2, ..., k} ou p|ak+1 . Portanto p|aj para algum j ∈ {1, 2, ..., k, k + 1}.
Pelo primeiro princı́pio de indução finita, a proposição está demonstrada.
Agora vamos demonstrar a unicidade da fatoração do Teorema Fundamental da Aritmética.
Unicidade Suponha que exista um inteiro n, n ≥ 2, que possa ser escrito como produto de
fatores primos de duas maneiras distintas, isto é
com u ≥ 1 e v ≥ 1, em que cada um dos primos do lado esquerdo é diferente de cada um dos
primos do lado direito, ou seja, os membros à esquerda e à direita não tem mais fatores primos
17
Capı́tulo 2 Fatoração Única
o que significa que pi1 divide qj1 · qj2 · ... · qjv . Pela Proposição 2.1.6, pi1 divide algum dos fatores
qj1 , qj2 , ..., qjv , o que é impossı́vel, pois esses fatores são primos e diferentes de pi1 .
Portanto não podemos ter duas fatorações distintas para um mesmo inteiro n, logo está provada
a unicidade da fatoração em números primos.
Agora que sabemos que todo inteiro pode ser escrito como um produto de inteiros, veremos
algumas maneiras de encontrarmos fatores de um inteiro n dado.
n = f 0 · (ab).
Então f 0 também é fator de n. Como supusemos que f era o menor fator de n, temos que f ≤ f 0 .
Mas f 0 é fator de f , logo f 0 ≤ f , e portanto f = f 0 . Concluimos que o único fator de f , maior
que 1, é o próprio f , ou seja, f é primo.
Com um pouco mais de atenção veremos que não precisamos procurar fatores até n − 1. De
√
fato, não precisamos procurar fatores maiores que n.
PROPOSIÇÃO 2.2.1. Se n é um inteiro positivo composto, então n tem um fator primo p satis-
√
fazendo 2 ≤ p ≤ n.
n = p1 · ... · ps
para certos fatores primos p1 ≤ ... ≤ ps , com s ≥ 2 (se s = 1 então n é primo). Afirmamos que
18
Algoritmos de Fatoração Seção 2.2
√ √
AFIRMAÇÃO: p1 ≤ n. De fato, se tivermos p1 > n, então
√ √
n = p1 · p2 · ... · ps ≥ p1 · p1 · ... · ps ≥ p1 · p1 > n· n=n
A impressão que temos é que quando n cresce, fica mais difı́cil ele possuir um fator primo
√
> n. Será que é possı́vel encontrarmos um n0 , de modo que, se n > n0 e n é composto, então n
√
não possui fator primo p > n ? O seguinte lema nos garante que não.
√
LEMA Seja n = m · p, m ≥ 2 e p primo. Então p é um fator primo de n maior que
2.2.2. n se,
e somente se, p > m.
√
p> mp ⇔ p2 > mp ⇔ p > m
Esse lema nos permite construir inteiros tão grande quanto se queira de forma que tal inteiro
possua um fator primo maior que sua raiz quadrada, pois dado m ∈ Z+ , sempre conseguimos
um primo p > m (já que existem infinitos primos, como veremos no próximo capı́tulo), logo para
√
qualquer inteiro N , existe n > N de modo que n possua um fator primo p > n. Em outras
palavras, o conjunto
√
X = {x ∈ Z+ |x possui um fator primo p > x}
19
Capı́tulo 2 Fatoração Única
é infinito.
Uma pergunta que imediatamente pode ser feita é: o conjunto
√
A = {x ∈ Z+ | todos os fatores primos de x são menores que x}
é finito ou infinito?
Se procurarmos exemplos, notaremos que se escolhermos aleatoriamente inteiros grandes, é
muito mais “fácil” escolhermos um inteiro que pertença ao conjunto A do que ao conjunto X,
mas isso não nos garante que A seja infinito (lembre-se de alguns fatos intrigantes com respeito a
cardinalidade, como Q vs. (R − Q), números algébricos vs. números transcendentes). Antes de
provarmos que A é mesmo infinito, vejamos uma maneira equivalente de enunciar o lema acima.
LEMA 2.2.3. Seja n = m · p, m ≥ 2 e p primo. Então p é um fator primo de n menor ou igual que
√
n se, e somente se, p ≤ m.
√
AFIRMAÇÃO: O conjunto A = {x ∈ Z+ | todos os fatores primos de x são menores que x} é
infinito.
Demonstração. Suponhamos, como hipótese de absurdo, que A seja finito. Então podemos escre-
ver A = {x1 , x2 , x3 , ..., xn } com x1 < x2 < x3 < ... < xn . Como A ⊂ Z e A é finito, A possui um
maior elemento, que no caso é xn .
√
Note que os elementos de A são todos compostos, pois se x é primo temos x > x. Em
particular, xn é composto.
xn = p1 · p2 · ... · ps
1 < p1
1 < p2
..
.
1 < pj−1
1 < pj+1
..
.
1 < pk−1
pj < p k
20
Algoritmos de Fatoração Seção 2.2
x
Multiplicando essas desigualdades membro a membro, concluı́mos que pj < , ou seja, o lema se
pj
verifica para qualquer fator pj < pk , sendo pk o maior fator primo de x.
Outra observação: xn possui todos os primos menores que ps como fatores. De fato: se p é um
primo menor do que ps que não é fator de xn , construı́mos o inteiro x = xn · p. Tal x é maior que
xn , e o maior fator primo de x é ps . Sendo assim, x ∈ A, pois
xn xn x
ps < < ·p=
ps ps ps
e isso contradiz o fato de xn ser o maior elemento de A. Portanto xn tem como fatores todos os
primos p ≤ ps .
Finalmente, construı́mos agora o inteiro y = xn · ps
Notoriamente temos y > xn . Se y ∈ A, teremos uma contradição e concluiremos que A não
pode ser finito.
Ora, o maior fator primo de y é ps , sendo assim
xn xn y
ps < < · ps = ⇒y∈A
ps ps ps
n = x2 − y 2 = (x + y)(x − y)
21
Capı́tulo 2 Fatoração Única
e temos y inteiro. Portanto, dois fatores de 731021 são x + y = 857 e x − y = 853. Por acaso, 853
e 857 são primos.
731021 = 853 × 857
√
TEOREMA 2.2.5. Seja n um inteiro ı́mpar, n > 2. Existe um inteiro x ≥ n tal que
√
y = x2 − n é um inteiro e x + y e x − y são fatores de n. Além disso, n é composto se, e
n+1
somente se, x < .
2
DEMONSTRAÇÃO. Suponha que n possa ser fatorado na forma n = ab, com a ≤ b. Queremos
encontrar x e y tais que n = x2 − y 2 , ou seja,
n = ab = (x + y)(x − y)
a+b b−a
x= ey=
2 2
De fato 2 2
a+b b−a
− = ab = n
2 2
Por hipótese, n é ı́mpar, logo a e b são ı́mpares, e portanto x e y tomados como acima são
inteiros.
Se n for primo, só podemos ter a = 1 e b = n, e assim está demonstrado a existência do inteiro
n+1
x. Vamos supor, então, que n seja composto. Precisamos apenas garantir que x < .
2
Nestas condições, temos dois casos a considerar. Primeiro, se n for um quadrado perfeito.
22
Algoritmos de Fatoração Seção 2.2
√ n+1
Neste caso, escolhemos x = n. Desse modo, temos x < , pois
2
Agora, se n é composto e não é um quadrado perfeito, ou seja, n = ab com 1 < a < b < n,
a+b
escolhemos x = . Por hipótese, temos b > 1 e a > 1 ⇔ a − 1 > 0, portanto
2
√
PROPOSIÇÃO 2.2.6. Se p é um inteiro primo, então p é irracional.
√
DEMONSTRAÇÃO. Suponha que p seja racional, isto é, existem inteiros a e b, b 6= 0, tais que
√ a
p= .
b
a
Podemos supor, ainda, que a fraçãoestá reduzida, ou seja, mdc(a, b) = 1 (se não estiver basta
b
√ a
cancelarmos o máximo divisor comum entre o numerador e o denominador). Se p = , temos
b
a2
que p = 2 , ou ainda
b
b 2 · p = a2 (2.3)
23
Capı́tulo 2 Fatoração Única
Isto significa que p divide a2 . Mas se p|a2 , então p|a, ou seja, existe um inteiro c tal que a = p · c.
Substituindo na equação (2.3), obtemos
b 2 · p = a2 = p 2 · c 2 ⇒ b 2 = p · c 2
Disto concluı́mos que p divide b2 , e portanto p divide b. Mas então p|a e p|b, com p ≥ 2 primo,
√ √
e isto é impossı́vel, pois mdc(a, b) = 1. Portanto p não pode ser racional, logo p é irracional.
24
Capı́tulo
3
Números Primos
Estamos estudando a teoria necessária para compreender o método de criptografia RSA. Tal
método faz uso de números primos grandes. Desse modo, é interessante conseguirmos gerar tais
primos. Mas o interesse em encontrar números primos não nasceu devido à criptografia. Os
números primos são conhecidos desde a antiguidade, e desde então eles encantam os matemáticos.
Estes sempre os estudaram buscando descobrir suas propriedades, e uma das coisas que sempre se
buscou foi uma fórmula que gerasse números primos.
Achar um polinômio que satisfaça tais condições parace ser pedante, mas alguns casos partic-
ulares podem, inicialmente, incentivar tal busca. Por exemplo, o polinômio p(x) = x2 + x + 41
quando avaliado nos inteiros de 1 a 39, só atinge valores primos. Entretanto, não é possı́vel en-
contrarmos um polinômio p(x) de modo que a imagem seja um número primo para todo inteiro
x.
25
Capı́tulo 3 Números Primos
TEOREMA 3.1.1. Dado um polinômio f (x) com coeficientes inteiros, existe uma infinidade de
inteiros m tais que f (m) é composto.
n
X
n n−1
f (x) = an x + an−1 x + · · · + a1 x + a0 = ai x i
i=0
com f (m) = p primo positivo, m inteiro positivo. Vamos supor, sem perda de generalidade, que
an > 0. Seja h um inteiro positivo. Temos
n
X
f (m + hp) = ai (m + hp)i
i=0
n i
!
X X i i−j j
= ai · m · (hp)
i=0 j=0
j
n i
!
X X i
= ai m i + ai · mi−j hj pj
i=0 j=1
j
n n i
!
X
i
X X i i−j j j−1
= ai m + ai p m hp
i=0 i=0 j=1
j
n i
!
X X i
= f (m) + p · ai mi−j hj pj−1
i=0 j=1
j
n i
!!
X X i
i−j j j−1
= p· 1+ ai m hp
i=0 j=1
j
n i
!
X X i
1+ ai mi−j hj pj−1 6= 1
i=0 j=1
j
n i
!
X X i
ai mi−j hj pj−1 >0
i=0 j=1
j
Mas o que temos no lado esquerdo da desigualdade acima é um polinômio g(h) em h, visto que
a0 , a1 , ..., an , m, p são valores fixados. Além disso, o grau deste polinômio é n e seu coeficiente lı́der
é an pn−1 > 0. Sendo assim, temos que
lim g(h) = +∞
h7→∞
26
Fórmulas Exponenciais: Mersenne e Fermat Seção 3.2
ou seja, para h suficientemente grande temos g(h) positivo, exatamente como precisavamos.
Num primeiro momento, a demonstração anterior pode parecer um pouco confusa. Vamos ver
o caso particular em que o polinômio f (x) tem grau 2 para que fique mais claro o que foi feito no
caso geral.
Se f (x) tem grau 2, ele se escreve como f (x) = ax2 + bx + c. Seja m um inteiro positivo tal
que f (m) = p é um número primo (positivo). Calculemos agora f (m + hp), onde h é um inteiro
positivo qualquer.
27
Capı́tulo 3 Números Primos
n
M (n) = 2n − 1 F (n) = 22 + 1
DEFINIÇÃO 3.2.1. Um número inteiro positivo é dito perfeito se é igual a metade da soma de
seus divisores positivos (incluindo n).
2n−1 · (2n − 1)
são perfeitos quando 2n − 1 é primo. Na verdade, todo número perfeito par é da forma 2n−1 ·(2n −1).
Isso foi demonstrado pela primeira vez por Euler, e o resultado foi publicado postumametne em
1849. Antes de fazermos tal demonstração, vejamos uma proposição que será necessária.
β β β
DEMONSTRAÇÃO. Se b1 = pα1 1 pα2 2 pα3 3 · · · pαr r e b2 = q1 1 q2 2 q3 3 · · · qsβs , com pi0 s e qj 0 s primos, como
mdc(b1 , b2 ) = 1, temos que cada pi é distinto de cada qj .
A quantidade de divisores positivos de b1 é (α1 + 1)(α2 + 1) · · · (αr + 1) e a quantidade de
divisores positivos de b2 é (β1 + 1)(β2 + 1) · · · (βs + 1). Tal fato é facilmente demonstrado usando-
se o Princı́pio Fundamental da Contagem.
Temos que b1 b2 = pα1 1 pα2 2 · · · pαr r q1β1 q2β2 · · · qsβs , logo a quantidade de divisores de b1 b2 é igual a
(α1 + 1)(α2 + 1) · · · (αr + 1)(β1 + 1)(β2 + 1) · · · (βs + 1), ou seja, se b1 e b2 possuem x e y divisores
positivos, respectivamente, e mdc(b1 , b2 ) = 1, então b1 b2 possui xy divisores positivos. Digamos
1
D(n) denota o conjunto do divisores positivos de n e S(n) denota a soma dos divisores positivos de n
28
Fórmulas Exponenciais: Mersenne e Fermat Seção 3.2
Note que a soma acima possui n · m parcelas, e além disso as parcelas são duas a duas distintas.
De fato, qualquer uma das parcelas é da forma ri sj , onde ri é um divisor de b1 e sj é um
divisor de b2 . Seja a = ri1 sj1 e b = ri2 sj2 duas parcelas da soma acima. Não podemos ter ri1 = ri2
e sj1 = sj2 simultaneamente, por motivos combinatórios. Suponha que ri1 = ri2 . Então a e b
são diferentes pois sj1 6= sj2 , o que faz com que a e b tenham decomposições primas diferentes, e
portanto não podem ser iguais. Algo análogo acontece se tivermos sj1 = sj2 . Agora, e se ri1 6= ri2
e sj1 6= sj2 ? Neste caso, como qualquer ri não possui fatores comuns com qualquer sj , também é
impossı́vel termos a = b, pois nesse caso terı́amos dois inteiros iguais com fatoração prima distinta,
absurdo. Portanto, as parcelas são de fato duas a duas distintas.
Se provarmos que qualquer parcela desta soma é um divisor de b1 b2 , concluiremos que essa
soma é igual e S(b1 b2 )
Seja rp sq uma parcela qualquer. Temos que rp |b1 ⇒ b1 = xrp , para algum x ∈ Z, e
sq |b2 ⇒ b2 = ysq , para algum y ∈ Z, logo b1 b2 = xrp usq = (xy)(rp sq ), ou seja, rp sq |b1 b2 . Como
cada parcela é um divisor de b1 b2 , e nesta soma temos n · m parcelas, essa é a soma dos n · m
divisores de b1 b2 . Portanto
S(b1 )S(b2 ) = S(b1 b2 )
PROPOSIÇÃO 3.2.3. Seja n um inteiro par. O inteiro n é um número perfeito se, e somente se,
n se escreve como 2s (2s+1 − 1), com s ∈ N e 2s+1 − 1 primo.
DEMONSTRAÇÃO. (⇐) Vamos mostrar que se s é um inteiro tal que 2s+1 − 1 é primo, então
n = 2s (2s+1 − 1) é perfeito. Para tanto, precisamos somar todos os seus divisores positivos e
concluir que tal soma é igual a 2n.
Seja n = 2s (2s+1 − 1). Se 2s+1 − 1 = p é primo, ele é um primo ı́mpar e é o único fator ı́mpar
de n. Observe as seguintes igualdades:
29
Capı́tulo 3 Números Primos
n = 1 × 2s p
= 21 × 2s−1 p
= 22 × 2s−2 p
= 23 × 2s−3 p
..
.
= 2s × 20 p
Os divisores do tipo (1) formam uma PG com primeiro termo igual a 1 e razão 2. Os divisores
do tipo (2) formam outra PG com primeiro termo igual a p e razão 2. Para obter S(n), devemos
somar2 duas PG’s. Lembrando que a soma dos n primeiros termos numa PG de primeiro termo a
a(q n − 1)
e razão q é Sn = , temos:
q−1
30
Fórmulas Exponenciais: Mersenne e Fermat Seção 3.2
Agora, seja r um inteiro tal que S(r) = r + 1. O inteiro r tem pelo menos dois divisores: 1 e
r. Seja S(r) a soma dos divisores positivos de r diferentes de r e 1. Temos
S(r) = r + 1 + S(r)
Por outro lado, sendo n perfeito, também podemos escrever S(n) = 2n = 2 · 2s t = 2s+1 t.
Portanto temos
2s+1 t = S(2s )S(t) (3.1)
20 (2s+1 − 1)
S(2s ) = 20 + 21 + 22 + · · · + 2s = = 2s+1 − 1
2−1
Desta última equação, tiramos que 2s+1 divide (2s+1 − 1)S(t). Mas 2s+1 só possui fatores iguais a
2, e o inteiro 2s+1 − 1 é ı́mpar, logo 2s+1 e 2s+1 − 1 são primos entre sı́. Portanto, pela Proposição
2.1.3, temos que 2s+1 divide S(t), isto é, existe um inteiro q tal que
S(t) = 2s+1 q
S(t) = t + q
o que contradiz S(t) ≥ 1 + t + q. De onde veio tal contradição? Da suposição q > 1. Portanto,
31
Capı́tulo 3 Números Primos
n = 2s t = 2s (2s+1 − 1) (3.4)
2n−1 (2n − 1)
logo, para encontrarmos os números perfeitos pares, basta encontrarmos os primos de Mersenne.
O estudo dos números perfeitos ainda está em aberto: não se sabe ainda se existem ou não
números perfeitos ı́mpares. Sabe-se apenas que se existir um número perfeito ı́mpar, seguramente
ele tem mais de 200 digitos ([05], p. 99). Em [07] é verificado que determinados números ı́mpares
não podem ser perfeitos.
Um número de Mersenne M (n) = 2n − 1 só pode ser primo se n for primo. De fato, se n é
composto temos que n = rs. Daı́
Temos então que se r divide n, então M (r) divide M (n), logo M (n) é composto.
M (11) = 2047 = 23 · 89
Mais adiante veremos um método que permite encontrar fatores primos de M (p) quando
p é primo. Os números de Mersenne recebem esse nome devido a uma afirmação de Marin
Mersenne, frade e matemático amador do século XVII, que repercurtiu nos secúlos seguintes entre
os matemáticos. Segundo Mersenne, os números da forma M (n) = 2n − 1 seriam primos quando
e compostos para os outros 44 valores primos de n menores que 257. Nessa época, era comum os
matemáticos trocarem cartas, e era muito comum também não serem apresentadas justificativas
para resultados apresentados nessas cartas, e isso aconteceu com essa afirmação de Mersenne. Nos
32
Fórmulas Fatoriais Seção 3.3
séculos seguintes, outros matemáticos sugeriram correções na lista de Mersenne: alguns estavam
corretos, outros não.
Mas com certeza, o rei dos Teoremas sem demonstração era Fermat. Sendo um matemático
amador (era jurista de profissão), nunca se preocupou em escrever com rigor os resultados que
obtinha, e sempre desafiava outros matemáticos a demonstrar suas conjecturas, numa espécie de
competição (ou seria uma provocação da parte de Fermat?). O exemplo mais famoso é O Último
Teorema de Fermat, sobre o qual hoje sabemos que é verdade, mas que dificilmente teria sido
provado por Fermat no século XVII.
n
Sobre os números de Fertmat, ele afirmou que todos os números F (n) = 22 + 1 seriam primos.
0
F (0) = 22 + 1 = 3
1
F (1) = 22 + 1 = 5
2
F (2) = 22 + 1 = 17
3
F (3) = 22 + 1 = 257
4
F (4) = 22 + 1 = 65537
5
F (5) = 22 + 1 = 4294967297
Ele verificou somente até F (4), e estava errado. F (5) é composto, e isto foi provado por Euler
100 anos mais tarde. O curioso é que Fermat tinha um método para encontrar fatores primos
de M (n), e um método muito semelhante lhe daria um fator de F (5), mas isso não foi feito por
Fermat, mas sim por Euler. Esse caso dos números de Fermat é interessante para vermos que a
intuição não vale como argumento matemático.
Por exemplo
2# = 2
3# = 2 · 3 = 6
4# = 2 · 3 = 6
5# = 2 · 3 · 5 = 30
6# = 2 · 3 · 5 = 30
33
Capı́tulo 3 Números Primos
p# = q # p
p p# p# + 1
2 2 3
3 6 7
5 30 31
7 210 211
11 2310 2311
Todos os valores da terceira coluna são primos. Será, então, que p# + 1 é primo para todo p?
Infelizmente não, pois
13# + 1 = 30031 = 59 · 509
Apesar da nossa frustração ainda podemos provar um resultado interessante sobre o número
#
p + 1.
PROPOSIÇÃO 3.3.1. O inteiro p# + 1 não possui nenhum fator primo menor ou igual a p.
DEMONSTRAÇÃO. Suponha, por absurdo, que p# + 1 tenha um fator primo q ≤ p. Isto significa
que q|(p# + 1), ou seja, existe r inteiro tal que qr = p# + 1. De modo equivalente, podemos
escrever
qr − p# = 1
Como q ≤ p, q é necessariamente fator de p# . Temos então que q|qr e q|p# , portanto q|(qr−p# ),
ou seja, q|1, o que implica q = 1. Mas q é primo, absurdo.
Esta proposição no diz que, mesmo quando p# + 1 é composto, seu menor fator primo é maior
do que p. Isto poderia nos levar a pensar num método para encontrar primos: se conhecemos
todos os primos até p, calculamos p# + 1 e tentamos fatorá-lo. Mas tal fatoração é impraticável,
pois mesmo para valores pequenos de p, p# + 1 é muito grande.
Na realidade, esta fórmula fatorial é um verdadeiro desastre se nossa intenção é construir
primos. Atualmente só se conhecem 16 primos da forma p# + 1, o maior deles para p = 24029.
Entretanto, a fórmula fatorial é interessante pois recupera o argumento usado por Euclides
para mostrar que existem infinitos primos.
34
Fórmulas Fatoriais Seção 3.3
que p, e portanto maior que todos os primos. Se p# + 1 for primo, já chegamos a um absurdo, pois
temos um primo que é maior que p, que seria o maior primo existente. Se p# + 1 for composto,
já vimos que este mesmo inteiro possui um fator primo maior do que p, e novamente temos uma
contradição. Portanto não pode existir uma quantidade finita de números primos.
35
Capı́tulo 3 Números Primos
36
Capı́tulo
4
Aritmética Modular
Dado um conjunto X, uma relação “∼” no conjunto X pode ser entendida como uma maneira de
comparar dois elementos do conjunto X. Por exemplo, se considerarmos o conjunto dos membros
de uma famı́lia onde temos pais, mães, filhos, filhas, tios, sobrinhos, etc., podemos definir algumas
relações. Uma relação poderia ser a seguinte: Dados dois elementos x e y, dizemos que x está
relacionado com y, indicado por x ∼ y, se x for filho(a) de y. É claro que não estamos interessados
nesse tipo de relação, mas sim em relações definidas sobre conjunto numéricos. Neste capı́tulo
veremos uma importante relação definida no conjunto dos inteiros.
37
Capı́tulo 4 Aritmética Modular
junto X sobre o qual está definida? Ela classifica os elementos de X, que possuem propriedades
semelhantes, em subconjuntos de X. Esses subconjuntos de X, determinados por uma relação de
equivalência, são chamados Classes de Equivalência.
x = {y ∈ X : y ∼ x}
PROPOSIÇÃO 4.1.3. Seja X um conjunto não vazio e ∼ uma relação de equivalência definida
sobre X.
(1) X é a união de todas as classes de equivalência.
(2) Duas classes de equivalência distintas são disjuntas.
DEMONSTRAÇÃO. (1) Como todo elemento de x pertence a sua própria classe, devido a propriedade
simétrica, temos que
[
x=X
x∈X
.
(2) Sejam x e y duas classes distintas de X, ou seja, existe um elemento que pertence a uma
delas e que não pertence à outra. Suponha que exista um elemento z ∈ X tal que z ∈ x ∩ y.
38
Inteiros Módulo n Seção 4.2
Isto significa que z ∈ x e z ∈ y. Pela proposição anterior, temos z = x z = y, o que nos leva a
x = y, o que contradiz a hipótese de x e y serem classes distintas.
Portanto x ∩ y = ∅.
Os dois itens da proposição anterior nos dizem que as classes de equivalência de um conjunto
X por uma relação ∼ formam uma partição de X.
O conjunto das classes de equivalência de ∼ em X é chamado conjunto quociente de X por ∼.
Os elementos do conjunto quociente são subconjuntos de X - as classes de equivalência. Ou
seja, o conjunto quociente não é subconjunto de X, mas subconjunto do conjunto das partes de X.
Lembre-se que o conjunto das partes de X é o conjunto cujos elementos são todos os subconjuntos
de X.
39
Capı́tulo 4 Aritmética Modular
(3)
a ≡ b (mod n) ⇔ n|(b − a) ⇔ b − a = nr, para algum r ∈ Z. (4.2)
a = nq + r e 0 ≤ r < n.
Temos que a − r = nq, ou seja, a ≡ r (mod n). Portanto, qualquer inteiro é congruente
módulo n a algum inteiro no intervalo de 0 a n − 1.
Portanto, Zn é formado pelas classes 0, 1, ..., n − 1.
Zn = {0, 1, 2, , , , n − 1}.
Podemos ainda nos perguntar se não é possı́vel reduzir ainda mais a quantidade de classes que
constituem Zn . Será que ao tomarmos as classes 0, 1, ..., n − 1 não estamos tomando alguma classe
duas vezes, ou seja, será que se a e b são dois inteiros com 0 < a, b < n e a 6= b, podemos ter
a=b?
A resposta é não. Sejam a e b dois inteiros com 0 < a, b < n e a 6= b. Podemos escrever as
seguintes desigualdades:
0<a<n
−n < −b < 0
40
Inteiros Módulo n Seção 4.2
0 ≤ |a − b| < n. (4.4)
0 ≤ a − b < n. (4.5)
Temos como hipótese inicial que a 6= b, ambos positivos e menores do que n, e queremos
concluir que ā 6= b. Se tivessemos a = b, teriamos a ≡ b (mod n), ou seja, existiria um inteiro r
tal que
a − b = nr (4.6)
Zn = {0, 1, 2, , , , n − 1}
Quando uma classe estiver representada na forma a com 0 ≤ a ≤ n − 1, diremos que está na
forma reduzida.
Vamos agora definir operações em Zn .
i) a + b = a + b
i) a · b = a · b
LEMA Quaisquer que sejam os representantes escolhidos para efetuar a soma ou o produto
4.2.4.
41
Capı́tulo 4 Aritmética Modular
(a − a0 ) + (b − b0 ) = nk ⇔ (a + b) − (a0 + b0 ) = nk
⇔ a + b ≡ a0 + b0 (mod n)
⇔ a + b = a0 + b 0
Dai,
a · b = (a0 + nr)(b0 + ns) = a0 · b0 + (a0 s + b0 r + nrs)n
Adição: (a + b) + c = a + (b + c)
a+b=b+a
a+0=a
a + −a = 0
Múltiplicação: (a · b) · c = a · (b · c)
a·b=b·a
a·1=a
Distributiva: a · (b + c) = a · b + a · c
As demonstrações destas propriedades decorrem diretamente das definições de + e · em Zn e
das propriedades análogas em Z para + e ·. A tı́tulo de exemplo, vamos demonstrar a distributiva:
a · (b + c) = a · (b + c) = a · (b + c) = ab + ac = ab + ac = a · b + a · c
Até aqui, parece que Zn se comporta como Z, no que se refere as operações. Vamos dar um
exemplo que mostra que Zn não é tão familiar quanto parece.
Considere Z6 . As classes 2 e 3 são diferentes de 0. Mas
2·3=6=0
42
Aplicações Seção 4.3
O produto de duas classes não nulas pode ser a classe 0. Isso não acontece em Z.
Antes de discutirmos melhor essa anomalia, vamos ver algumas aplicações das ideias discutidas
até aqui.
4.3 Aplicações
Podemos escrever
a = 10n an + 10n−1 an−1 + · · · + 10a1 + a0
Logo a é divisı́vel por 3, isto é, a ≡ 0 (mod 3), se, e somente se, an + an−1 + · · · + a1 + a0 também
o for.
Como 10 ≡ 1 (mod 9), os resultados acima se repetem para a divisão por 9.
(2) Um número é divisı́vel por 11 se a soma alternada de seus algarismos for divisı́vel por 11.
Novamente, vamos olhar para as potências de 10, mas agora usando módulo 11.
4.3.2 Potências
Outra aplicação do conceito de congruência é o cálculo dos restos da divisão de uma potência por
um número qualquer. Vejamos alguns exemplos.
43
Capı́tulo 4 Aritmética Modular
3 ≡ 3 (mod 31)
32 ≡ 9 (mod 31)
33 ≡ 27 ≡ −4 (mod 31)
34 ≡ 19 ≡ −12 (mod 31)
44
Aplicações Seção 4.3
Seria ideal se k fosse par e 2k fosse múltiplo de 5 (o que só acontece se k já for múltiplo de 5),
pois isso acarretaria
3r ≡ (25 )q ≡ 1 (mod 31)
O menor inteiro k múltiplo de 2 e de 5 ao mesmo tempo é 10, o que nos leva a r = 30. Assim
temos:
330 ≡ (33 )10 ≡ (−4)10 ≡ 220 ≡ (25 )4 ≡ 14 ≡ 1 (mod 31)
Um último exemplo.
Não adianta procurarmos uma potência de 6 cujo resto da divisão por 16 é 1, pois
4
6 ≡ 0 (mod 16), portanto
Como x0 e y0 são inteiros, a igualdade acima é uma relação entre inteiros, logo podemos reduzı́-la
45
Capı́tulo 4 Aritmética Modular
Mas 117 = 9 · 13, ou seja, 117 ≡ 0 (mod 9), portanto a equação se reduz a
x30 ≡ 5 (mod 9)
Mas não existe x inteiro que satisfaça essa congruência. As classes distintas módulo 9 são
representadas pelos números de 0 a 8. Vejamos o que acontece com seus cubos.
Classe 0 1 2 3 4 5 6 7 8
Cubo 0 1 8 0 1 8 0 1 8
Como o cubo de qualquer inteiro é congruente a 0, 1 ou 8, módulo 9, a equação x30 ≡ 5 (mod 9)
não tem solução. Portanto
x3 − 117y 3 = 5
x20 − 7y02 = 3
46
Divisão Modular Seção 4.4
Admita por um instante, que a e b sejam números reais. Podemos definir a divisão da seguinte
1 1
maneira: dividir a por b significa multiplicar a por . O número real é o inverso de b e é
b b
caracterizado pela equação
1
b· =1
b
Note que se adotarmos essa definição, nos inteiros só conseguimos dividir por 1 ou por −1,
pois são os únicos inteiros que possuem inverso também inteiro. Já em R qualquer elemento não
nulo possui inverso. Vamos transpor essa definição para Zn .
0 · α = 0 · α = 0 6= 1, ∀ α ∈ Zn
O que ocorre de diferente em Zn é que outros elementos diferentes de 0 podem não possuir
inverso também.
Suponha que a ∈ Zn possua inverso α. Isso significa que a · α = 1, e essa equação equivale a
dizer que aα − 1 é divisı́vel por n, ou seja, existe um inteiro k tal que aα − 1 = kn, ou ainda
aα − kn = 1.
Esta última equação nos leva a concluir que mdc(a, n) = 1. Portanto, se a possui inverso em Zn
então mdc(a, n) = 1. Será que a reciproca é verdadeira?
Seja a um inteiro e suponha que mdc(a, n) = 1. Sabemos que existem inteiros α e β tais que
aα + nβ = 1
aα + nβ = 1 ⇔ aα − 1 = n(−β) ⇔ a · α = 1
TEOREMA 4.4.2 (Teorema da Inversão). A classe a possui inverso em Zn se, e somente se, a e
n são primos entre sı́.
47
Capı́tulo 4 Aritmética Modular
Observemos que a demonstração feita também nos diz como calcular o inverso quando ele
existe: basta usarmos o algoritmo euclidiano estendido.
Por exemplo, qual o inverso de 5 em Z27 ? Vamos aplicar o algoritmo euclidiano estendido.
restos quocientes x y
27 - 1 0
5 - 0 1
2 5 1 -5
1 2 -2 11
Temos então que mdc(5, 27) = 1, logo 5 possui inverso em Z27 . E mais
5 · 11 − 27 · 2 = 1 ⇔ 5 · 11 = 1
É simples determinar quais são os elementos de U (p) quando p é primo. Nessa situação,
mdc(a, p) = 1 significa que p não divide a. Se p divide a, então a = 0. Sendo assim, quando p é
primo, todas as classes diferentes de 0 possuem inverso.
U (p) = Zp \{0}
Mas isso só vale quando p é primo. Em Z4 = {0, 1, 2, 3} os únicos primos com 4 são 1 e 3,
portanto
U (4) = {1, 3}
Portanto α · β é o inverso de a · b.
1
Essa é uma caracterı́stica necessária para U (n) ser grupo. Mais adiante veremos que U (n) munido da
operação · é um grupo; mais ainda, é um grupo abeliano.
48
Divisão Modular Seção 4.4
O conjunto U (n) será alvo de nossas atenções nos próximos capı́tulos. Duas coisas que faremos:
DEFINIÇÃO 4.4.3. Uma classe a de U (n) é uma raiz primitiva se todo elemento de U (n) é igual
a uma potência de a.
1
3 =3
2
3 =2
3
3 =6
4 U (7)
3 =4
5
3 =5
6
3 =1
Ainda em U (7), vemos que 2 não é uma raiz primitiva. De fato, como 23 ≡ 1 (mod 7), se r é
um inteiro temos que r = 3k + s, com s = 0, 1, 2. Daı́,
23k ≡ (23 )k ≡ 1
2r ≡ 23k+1 ≡ (23 )k · 2 ≡ 2 (mod 7)
3k+2
2 ≡ (23 )k · 4 ≡ 4
com a, b ∈ Z.
Para encontrarmos quais valores de x são soluções da congruência, precisamos “dividir” ambos
os membros por a, para que possamos isolar x. Se a for inversı́vel módulo n, isto é, a ∈ U (n),
então a congruência tem uma única solução em Zn : se α é o inverso de a em Zn , temos
a·x=b⇒α·a·x=α·b⇒x=α·b
49
Capı́tulo 4 Aritmética Modular
Por exemplo, considere a congruência 3x ≡ 12 (mod 7). Note que estamos trabalhando em
Z7 . Como 3 é primo com 7, ele possui inverso módulo 7, a saber
3 · 5 = 15 = 1
3x ≡ 12 (mod 7) ⇒ x ≡ 5 · 12 ≡ 60 ≡ 4 (mod 7)
2x0 − 1 = 8k
mas na equação acima temos um inteiro ı́mpar no lado esquerdo e um inteiro par no lado direito,
o que é impossı́vel. Portanto realmente 2x ≡ 1 (mod 8) não tem solução. Nesse caso tı́nhamos
mdc(2, 8) 6= 1.
Considere agora, ainda em Z8 , a equação 6x ≡ 2 (mod 8). Nesse caso, mesmo com
mdc(6, 8) 6= 1, a equação apresenta solução, mas não única. De fato
6 · 3 ≡ 18 ≡ 2 (mod 8) ∴ 3 é solução.
6 · 7 ≡ 42 ≡ 2 (mod 8) ∴ 7 é solução.
50
Capı́tulo
5
Fermat e Primalidade
(a + b)p ≡ ap + bp (mod p)
DEMONSTRAÇÃO. Usando o binômio de Newton para expandir o lado esquerdo da equação acima,
obtemos.
p−1
p
X
p pp p−i i
(a + b) = a + b + a b
i=1
i
p−1
X p
ap−i bi ≡ 0 (mod p)
i=1
i
51
Capı́tulo 5 Fermat e Primalidade
Sabemos que este número é inteiro, ou seja, o demoninador i! é totalmente cancelado por termos
do numerador. Como 1 ≤ i ≤ p − 1 e p é primo, o fator p que aparece no numerador não é
cancelado por nenhum fator do denominador. Logo pi é múltiplo de p quando 1 ≤ i ≤ p − 1, e
portanto
p−1
X p p−i i
a b ≡ 0 (mod p)
i=1
i
(k + 1)p ≡ k + 1 (mod p)
Portanto ap ≡ a (mod p) para a ≥ 0. Vamos agora estender o resultado para os inteiros negativos.
Seja a um inteiro negativo. Então −a é positivo, logo podemos aplicar o que já provamos para
o inteiro −a.
(−a)p ≡ −a (mod p)
Substituindo na equação anterior obtemos −ap ≡ −a. Multiplicando esta por −1, chegamos à
ap ≡ a (mod p)
Agora, se p = 2, devemos verificar que a2 ≡ a (mod 2), o que equivale a mostrar que
a(a − 1) ≡ 0 (mod 2). Como a e a − 1 são números consecutivos, um deles é par, portanto
a(a − 1) é múltiplo de dois, ou seja,
a2 − a ≡ 0 (mod 2)
52
Pequeno Teorema de Fermat Seção 5.1
o que equivale a
a2 ≡ a (mod 2).
TEOREMA 5.1.3 (Teorema de Fermat II). Seja p um número primo e a um inteiro que não é
divisı́vel por p. Então
ap−1 ≡ 1 (mod p)
Esta versão do teorema é útil para o cálculo de potências módulo p primo. Expliquemos melhor.
Considere três inteiros positivos a, k e p, suponha que p seja primo e também que p 6 |a. Vamos
supor que k seja grande (pois é isso que torna os cálculos trabalhosos). O problema é encontrar a
forma reduzida de ak módulo p, ou seja, encontrar o resto da divisão de ak por p. O teorema de
Fermat nos ajuda neste ponto.
Estamos supondo k grande, logo podemos supor k ≥ p − 1. Dividimos, agora, k por p − 1, e
obtemos k = (p − 1)q + r, onde o resto r satisfaz 0 ≤ r ≤ p − 2. Temos
ak ≡ ar (mod p).
Vamos a um exemplo numérico para mostrar a utilidade deste resultado. Vamos calcular
1684948
3 módulo 17. Neste caso, temos a = 3, p = 17 e k = 1684948. Primeiramente, dividimos k
por p − 1.
1684948 = 16 · 105309 + 4
53
Capı́tulo 5 Fermat e Primalidade
Portanto
31684948 ≡ 316·105309+4 ≡ (316 )105309 · 34 (mod 16)
quando p é primo e p 6 |a. Será que é possı́vel encontrar um expoente k menor do que p − 1 de
modo que ak ≡ 1 (mod p) para todo inteiro a não divisı́vel por p?
O Teorema Fundamental da Álgebra nos diz que todo polinômio de grau n,
p = X n + an−1 X n−1 + · · · + a1 X + a0
onde α1 , α2 , ..., αn são números complexos. Os coeficientes a0 , a1 , ..., an−1 também são complexos.
Como consequência de tudo isso, temos que a equação f (x) = 0 possui exatamente n raı́zes
(distintas ou não) em C, que são exatamente os complexos α1 , ..., αn .
Se restringirmos os coeficientes a0 , a1 , ..., an−1 ao conjunto dos inteiros Z, o teorema continua
valendo, pois Z ⊂ C. Se perguntarmos sobre a quantidade de raı́zes da equação f (x) = 0 que
pertençam a Z, é claro que podemos afirmar que estas são, no máximo, n raı́zes (distintas ou não),
e o motivo é novamente o fato de Z ser subconjunto de C.
Sendo assim, um corolário do Teorema Fundamental da Álgebra que podemos enunciar é: um
polinomio de grau k com coeficientes inteiros e coeficiente lı́der 1 tem no máximo k raı́zes distintas
em Z.
Para respondermos à pergunta que iniciamos a seção, precisarı́amos de algo análogo, mas
enuciado para Zp .
54
Contando Raı́zes Seção 5.2
Portanto a resposta à nossa pergunta é não se o resultado citado valer em Zp . Vamos demonstrar
a validade do resultado quando p é primo, e dar um exemplo de que é falso quando p é composto.
Vamos primeiro dar o exemplo para p composto. Em Z385 , o polinômio X 2 − 170 possui como
raı́zes 95, 150, 235, 290, pois
logo temos uma equação com grau 2, e que possui (no mı́nimo) 4 raı́zes em Z385 . Portanto,
quando n é composto não podemos garantir que um polinômio de grau k, com coeficientes inteiros
e coeficiente lı́der 1, tem no máximo k raı́zes.
A seguir veremos que, para p primo, o resultado de que necessitamos é válido, mas antes de
demonstrarmos este teorema, vamos demonstrar um lema que será útil.
LEMA Seja h um polinômio com coeficientes inteiros de grau m. Dado um inteiro α, existe
5.2.1.
h = (X − α) · q + h(α) (5.2)
DEMONSTRAÇÃO. Vamos demonstrar usando o segundo princı́pio de indução finita sobre o grau
m do polinômio h.
Se m = 1, então h = aX + b para certo inteiros a e b. Daı́,
Defina
g = h − am X m−1 (X − α)
55
Capı́tulo 5 Fermat e Primalidade
ou seja
Sendo assim, g tem grau ≤ m−1. Pela hipótese de indução, existe um polinômio j com coeficientes
inteiros e grau ≤ m − 2 tal que
g = j · (X − α) + g(α)
h = g + am X m−1 (X − α)
Portanto
h = j · (X − α) + h(α) + am X m−1 (X − α)
= (j + am X m−1 )(X − α) + h(α)
Como j tem grau ≤ m − 2, segue que (j − am X m−1 ) tem grau m − 1, provando assim o lema.
TEOREMA 5.2.2. Seja f um polinômio de grau k com coeficientes inteiros e coeficiente lı́der 1.
Se p é um número primo, então f tem no máximo k raı́zes distintas em Zp .
x + b = 0 ⇒ x = −b
Suponha agora que todo polinômio de grau k − 1, com coeficientes inteiros e coeficiente lı́der
1, tenha no máximo k − 1 raı́zes distintas em Zp . Seja f um polinômio de grau k com coeficientes
inteiros e coeficiente lı́der 1. Se f não tem raiz em Zp , o teorema está demonstrado. Suponhamos
então que α é uma raiz de f em Zp , ou seja, f (α) ≡ 0 (mod p)
Pelo lema anterior,
f = (X − α)q + f (α)
56
Contando Raı́zes Seção 5.2
Devemos destacar algo sutil nesta última demonstração: primeiramente, a hipótese de p ser
primo foi fundamental para concluirmos que q(β) ≡ 0 (mod p). Mas há algo muito mais tênue,
que quase passa despercebido: a hipótese de comutatividade. Discorramos um pouco sobre isso.
Podemos definir polinômio da seguinte maneira: um polinômio p sobre um anel (A, +, ·) com
unidade 1A é uma sequência quase nula, isto é, uma sequência (a0 , a1 , a2 , · · · , an , 0, 0, 0, ...), onde
cada entrada ai ∈ A, e a partir de um certo ı́ndice n todos os termos da sequência são iguais ao
elemento neutro (1) da adição de A. Podemos definir o conjunto dos polinômios sobre o anel A
por A[X].
Definido o conjunto A[X], podemos definir operações em A[X] da seguinte maneira: Sejam
p = (a0 , a1 , a2 , · · · , an , 0, 0, 0, ...) e q = (b0 , b1 , b2 , · · · , bm , 0, 0, 0, ...) dois polinômios de A[X], k ∈ A
1
Denotaremos esse elemento simplesmente por 0. Em livros a notação 0A também é usada.
57
Capı́tulo 5 Fermat e Primalidade
e suponha m ≤ n. Definimos
.
p + q = (a0 + b0 , a1 + b1 , a2 + b2 , · · · , an + bn , 0, 0, 0, ...)
.
k · p = (ka0 , ka1 , ka2 , · · · , kan , 0, 0, 0, ...)
.
p · q = (c0 , c1 , c2 , · · · , cn+m , 0, 0, 0, ...)
Pk
onde ck = a0 bk + a1 bk−1 + a2 bk−2 + a3 bk−3 + · · · + ak−1 b1 + ak b0 = i=0 ai bk−i .
Observamos que a notação usada para o produto de um elemento de A por um elemento
de A[X] é a mesma empregada para o produto de dois elementos de A[X]. Isso não acarreta
ambiguidade, uma vez que sua distinção é notada facilmente pelo contexto, além do mais essa
prática é utilizada na grande maioria dos textos que abordam esse assunto.
As propriedades que as operações + e · (produto de polinômios) possuem dependem direta-
mente das propriedades das operações + e · do anel A.
Denotamos por:
1 = 1A[X] = (1A , 0, 0, ...) e X = (0, 1A , 0, 0, ...)
X 2 = X · X = (0, 0, 1A , 0, 0, 0, ...)
X 3 = X 2 · X = (0, 0, 0, 1A , 0, 0, ...)
e em geral
X n = X n−1 · X = (a0 , a1 , a2 , ..., aj , ...)
sendo que ai = 0 ∀i 6= n e an = 1A . Desta forma, todo polinômio p ∈ A[X] pode ser escrito na
forma
p = (a0 , a1 , ..., an , 0, 0, 0, ...) = a0 + a1 X + · · · + an X n
58
Contando Raı́zes Seção 5.2
Vejamos o que acontece, por exemplo, quando definimos o conjunto dos polinômios sobre o anel
M (2, R) das matrizes quadradas 2 × 2 de números reais. Sabemos que esse anel não é comutativo.
Sejam p = A + BX + CX 2 e q = D + EX + F X 2 elementos de M (2, R)[X]. Para sabermos
qual é a função polinomial (p · q)(x), devemos multiplicar os polinômios p e q segundo as operações
que definimos em M (2, R)[X]. Sendo assim temos
p = (A, B, C, 0, 0, 0, ...)
q = (D, E, F, 0, 0, 0, ...)
logo
p · q = (AD, AE + BD, AF + BE + CD, BF + CE, CF, 0, 0, ...).
!
1 2
Agora, vamos avaliar p(x), q(x) e (p · q)(x) em α = . Neste caso, temos
−3 −4
!! ! ! ! ! !2 !
1 2 7 9 5 4 1 2 1 0 1 2 −5 −3
p = + + =
−3 −4 1 5 0 9 −3 −4 0 9 −3 −4 55 59
!! ! ! ! ! !2 !
1 2 1 0 7 5 1 2 4 2 1 2 −9 −10
q = + + =
−3 −4 1 1 0 8 −3 −4 2 3 −3 −4 −6 −13
!! !! !
1 2 1 2 63 89
Portanto temos p ·q = , enquanto que
−3 −4 −3 −4 −849 −1317
!! ! ! " ! ! ! !# !
1 2 7 9 1 0 7 9 7 5 5 4 1 0 1 2
(p · q) = + + +
−3 −4 1 5 1 1 1 5 0 8 0 9 1 1 −3 −4
" ! ! ! ! ! !# !2
7 9 4 2 5 4 7 5 1 0 1 0 1 2
+ + + +
1 5 2 3 0 9 0 8 0 9 1 1 −3 −4
" ! ! ! !# !3
5 4 4 2 1 0 7 5 1 2
+ + +
0 9 2 3 0 9 0 8 −3 −4
! ! !4
1 0 4 2 1 2
+
0 9 2 3 −3 −4
!
75 37
=
−525 −561
59
Capı́tulo 5 Fermat e Primalidade
Portanto, em M (2, R)[X] nem sempre é verdade que p(α) · q(α) = (p · q)(α). Felizmente, no
caso do teorema que demonstramos, como Z é comutativo, é verdade que p(α) · q(α) = (p · q)(α)
para quaisquer polinômios p, q e qualquer inteiro α.
5.3 Pseudoprimos
O teorema de Fermat nos deu uma importante relação entre números inteiros e primos. É natural
a busca por testes de primalidade usando este resultado. O que veremos nesta seção são testes
que foram descobertos usando-se o teorema de Fermat, direta ou indiretamente. Como veremos,
nenhum deles é o que se estava procurando, pois não revelam se o é número primo, apenas detectam
se ele é composto. Mas isso, de certa forma, já é um avanço.
O teorema de Fermat diz que se p é primo e a é um inteiro, então
ap ≡ a (mod p)
o que podemos concluir? Se n fosse primo, terı́amos bn ≡ b (mod n), portanto n é obrigatoria-
mente composto.
Conseguimos um teste que nos diz que um número n é composto sem encontrarmos nenhum
fator de n. Mas onde procurar o inteiro b? Segundo o teorema de Fermat, b pode ser qual-
quer inteiro. Mas podemos restringir nossa busca a inteiros satisfazendo 1 < b < n − 1, pois
0n ≡ 0 (mod n), 1n ≡ 1 (mod n) e (n − 1)n ≡ n − 1 (mod n). As duas primeiras congruências
são óbvias. Para justificar a terceira congruência, observe que n − 1 ≡ −1 (mod n). Como n é
ı́mpar, temos
(n − 1)n ≡ (−1)n ≡ −1 ≡ n − 1 (mod n)
Além disso, não precisamos procurar inteiros b ≥ n, pois qualquer inteiro maior do que n é côngruo
a algum outro inteiro no itervalo 0 ≤ b ≤ n − 1.
Portanto, se queremos encontrar um inteiro b de modo que
bn 6≡ b (mod n)
60
Pseudoprimos Seção 5.4
número composto. O número b é conhecido como uma testemunha do fato de n ser composto.
Conseguimos um teste para dizer se n é composto. Mas gostarı́amos de algo para afirmar se n
é primo. Alguém poderia dizer: se um número n ı́mpar satisfaz bn−1 ≡ 1 (mod n) para algum b,
1 < b < n − 1, então n é primo.
Infelizmente, tal teste é falso. O teorema de Fermat vale para qualquer inteiro b, logo a validade
da equação do teorema para um b particular não garante a primalidade de n. Mesmo assim, Leibniz
usava isso como teste de primalidade, tomando b = 2 para “facilitar” os cálculos. Por exemplo
341 = 11 · 31.
logo 3 é uma testemunha de que 341 é composto. Entre 1 e 109 existem apenas 1272 pseudoprimos
para as bases 2 e 3.
Poderı́amos pensar em testar todas as bases de 1 à n − 1, mas se n é grande isto é impraticável,
mas essa discussão nos leva a questões interessantes.
61
Capı́tulo 5 Fermat e Primalidade
mdc(b, n) 6= 1 ⇒ mdc(bn−1 , n) 6= 1.
Se bn−1 ≡ 1 (mod n), terı́amos que n|(bn−1 − 1), ou seja, bn−1 − 1 = nr ⇔ bn−1 − nr = 1. Mas
isto nos permitiria concluir que mdc(bn−1 , n) = 1, absurdo. Portanto bn−1 6≡ 1 (mod n), ou seja,
n não é um pseudoprimo para a base b, ou seja, provamos que:
Equivalentemente temos:
TEOREMA 5.4.1. Seja n um número inteiro. Se bn−1 ≡ 1 (mod n) para todo 1 < b < n − 1,
então n é primo.
Esse é um teste de primalidade que nos dá certeza de que n é primo, mas é impraticável devido
à quantidade de bases que deverı́amos testar.
O que devemos destacar é que só podemos dizer que n é primo se usarmos a equação da segunda
versão do teorema de Fermat. Se bn ≡ b (mod n) para qualquer b, não podemos afirmar que n
é primo, pois existem números compostos que satisfazem bn ≡ b (mod n) para todo b entre 1 e
n − 1. São os chamados números de Carmichael.
É dificil acreditarmos na existência de tais números antes de ver um. Sendo assim, vejamos
um exemplo.
Afirmamos que 561 é um número de Carmichael. Precisamos mostrar que b561 ≡ b (mod 561)
para b = 2, 3, 4, · · · , 559, um total de 558 bases. Não parece ser um bom caminho.
Primeiramente, observe que 561 é composto (qualquer número primo p satisfaz bp ≡ p (mod p),
mas p não é um número de Carmichael).
561 = 3 · 11 · 17
Agora, considere b um inteiro entre 2 e 559. Se mostrarmos que b561 − b é divisı́vel por 3, por 11 e
por 17, como estes são primos distintos, segue da segunda parte da proposição 2.1.3 que o produto
destes primos divide b561 − b. Mas este produto é 561, e dizer que 561 divide b561 − b é equivalente
a
b561 ≡ b (mod 561).
62
Números de Carmichael Seção 5.4
onde a última congruência segue do teorema de Fermat. Portanto b561 − b é divisı́vel por 3.
(2) Se 11 divide b, seque imediatamente que 11 divide b561 − b. Agora, se 11 não divide b, segue
do teorema de Fermat que b11−1 ≡ 1 (mod 11). Daı́
onde a última congruência segue do teorema de Fermat. Portanto b561 − b é divisı́vel por 11.
(3) Se 17 divide b, seque imediatamente que 17 divide b561 − b. Agora, se 17 não divide b, segue
do teorema de Fermat que b17−1 ≡ 1 (mod 17). Daı́
onde a última congruência segue do teorema de Fermat. Portanto b561 − b é divisı́vel por 17.
Se b561 − b é divisı́vel por 3, 11 e 17, e estes são primos entre sı́, temos que b561 − b é divisı́vel
por 3 · 11 · 17 = 561, ou seja
b561 ≡ b (mod 561).
Como b é qualquer inteiro entre 2 e 559, segue que 561 é um número de Carmichael.
Tivemos um pouco de “sorte”. Como usamos o teorema de Fermat, tivemos que dividir 561
por p − 1, para p = 3, 11, 17. Felizmente, todas estas divisões tiveram resto igual a 1, o que nos
permitiu concluir o raciocı́nio facilmente. Além disso, os fatores primos de 561 apareceram apenas
uma vez em sua decomposição, o que nos permitiu utilizar a proposição 2.1.3.
Mas será que sempre teremos tanta sorte ao tentarmos provar que um número é de Carmichael?
Na verdade, as propriedades destacadas no paragrafo anterior não são exclusivas ou acidentais para
561. Elas constituem uma caracterização do números de Carmichael.
Para mostrarmos que se um número satisfaz (1) e (2) então ele é um número de Carmichael,
usaremos apenas conceitos que já foram discutidos. Da mesma forma, para mostrar que um
número de Carmichael satisfaz (1), também usaremos apenas ideias já apresentadas até aqui.
63
Capı́tulo 5 Fermat e Primalidade
Entretanto, para mostrar que qualquer número de Carmichael satisfaz (2), precisamos do auxı́lio
da teoria dos grupos, que estudaremos num capı́tulo posterior. Por hora, apenas enunciaremos
definições e resultados necessários, sem demonstrá-los aqui. As justificativas destes resultados
virão em momento oportuno.
• Dado um grupo (G, ·), a ordem de a ∈ G é o menor inteiro positivo k tal que ak = e, onde
e é o elemento neutro do grupo G. Se ak =
6 e para qualquer inteiro k, dizemos que a tem
ordem infinita.
• A ordem de um grupo cı́clico finito (G, ·) gerado por a é igual a ordem do seu gerador a.
bn ≡ b (mod p)
Se b for divisı́vel por p, então a congruência é imediatamente verificada. Se b não for divisı́vel
por p, o teorema de Fermat nos diz que
bp−1 ≡ 1 (mod p)
Para usarmos isso, precisamos dividir n por p − 1. Mas a condição (2) nos diz que p − 1 divide
n − 1, ou seja, existe q tal que
n − 1 = (p − 1)q ⇒ n = (p − 1)q + 1
Daı́,
bn ≡ b(p−1)q+1 ≡ (bp−1 )q · b ≡ b (mod p)
64
Números de Carmichael Seção 5.4
bn ≡ b (mod n)
bn 6≡ b (mod n)
Como p não divide pn−1 − 1, p2 não pode dividir pn − p. Se n dividisse pn − p, como estamos
supondo que p2 |n, teriamos que p2 |pn − p, o que já vimos que é impossı́vel. Portanto n 6 |pn − p,
ou seja,
pn 6≡ p (mod n)
an−1 ≡ 1 (mod p)
Pelo lema chave, n − 1 é divisı́vel pela ordem de a. Mas a é um gerador de U (p), cuja ordem é
p − 1, logo a ordem de a é p − 1, e concluı́mos que p − 1 divide n − 1.
65
Capı́tulo 5 Fermat e Primalidade
Vimos que o teorema de Fermat nos fornece um teste que verifica com certa eficiência se um
número é composto, mas que já não é tão eficiente se nosso desejo é verificar a primalidade de um
número n, prova disso é a existência dos números de Carmichael, que caracterizamos anteriormente.
Acrescentamos aqui uma informação: já demonstrou-se que os números de Carmichael são infinitos,
e a certeza dessa afirmação é relativamente recente, um artigo de 1994. (informações em [01]).
Neste mesmo artigo é apresentado um resultado de grande importância no que se refere a testes de
primalidade usados por computação algébrica. Discutiremos rapidamente a ideia desse resultado,
que se trata de uma modificação do teste que estudamos anteriormente.
O novo teste, o teste de Miller, inicia-se observando que se o inteiro positivo n > 2 é ı́mpar
(pois se n é par já sabemos que é composto) então n − 1 é par, logo podemos escrever
n − 1 = 2k q
onde q é um inteiro ı́mpar e k ≥ 1. Seja b um inteiro, 1 < b < n − 1. O teste consiste em calcular
as seguintes potências módulo n:
2 3 k−1 q kq
bq , b2q , b2 q , b2 q, ..., b2 , b2
Se n for um número primo, ao menos uma dessas potências será congruente a 1 módulo n, pois
pelo teorema de Fermat
k
b2 q ≡ bn−1 ≡ 1 (mod n)
j
Sendo assim, seja j o menor expoente tal que b2 q ≡ 1 (mod n). Temos duas possibilidades:
j
ou j = 0 ou j ≥ 1. Se j ≥ 1, podemos usar diferença de quadrados para fatorar b2 q − 1.
j j−1 q j−1 q
b2 q − 1 = (b2 − 1)(b2 + 1)
j j−1 j−1
Estamos supondo n primo e divisor de b2 q −1. Logo, n divide b2 q −1 ou n divide b2 q +1. Mas
j j−1
j é o menor expoente tal que b2 q − 1 é divisı́vel por n, portanto b2 q − 1 não pode ser divisı́vel
j−1
por n, e portanto n obrigatoriamente divide b2 q + 1, ou seja
j−1 q
b2 ≡ −1 (mod n)
2 3 k−1 q
bq , b2q , b2 q , b2 q, ..., b2
66
Números de Carmichael Seção 5.4
é congruente a −1 módulo n. Mas isso só acontece se j ≥ 1, para podermos usar o produto notável
como fizemos. No caso em que j = 0 temos
bq ≡ 1 (mod n)
Portanto 341 é composto pelo teste de Miller, pois 2q = 85 não é côngruo a 1 módulo 341 e
nenhuma das outras potências (que nesse caso é só mais uma) é congruente a −1 módulo 341.
O raciocı́nio que desenvolvemos nos permite apenas detectar se um número inteiro é composto.
j
Se ao aplicarmos o teste de Miller e encontrarmos bq ≡ 1 (mod n) ou b2 q ≡ −1 (mod n),
0 < j < k, não podemos concluir nada a respeito do inteiro n. Neste caso, dizemos que o teste é
inconclusivo. Por exemplo, apliquemos o teste para o inteiro 25 usando base 7. Como 25−1 = 23 ·3,
2
as potências que devemos testar são 73 , 72·3 e 72 ·3 .
2
potências 73 72·3 72 ·3
restos 18 24 1
Como 72·3 ≡ 24 ≡ −1 (mod 25), o teste de Miller é inclonclusivo para 25. Neste caso dizemos
que 25 é um pseudoprimo forte para a base 7.
É facil verificar que se um inteiro n é um pseudoprimo forte para uma base b, então n é um
pseudoprimo para a base b: sejam k e q inteiros, q ı́mpar, tais que n − 1 = 2k q. Se n é um
pseudoprimo forte para uma base b temos que
j
bq ≡ 1 (mod n) ou b2 q ≡ −1 (mod n) para algum j , 0 < j ≤ n − 1
k k k
No primeiro caso, bn−1 ≡ b2 q ≡ (bq )2 ≡ (1)2 ≡ 1 (mod n). No segundo caso,
j j+(n−j) q j n−j j n−j n−j
bn−1 ≡ b2 q ≡ b2 ≡ b2 ·2 q ≡ (b2 q )2 ≡ (−1)2 ≡ 1 (mod n). Em ambos os casos
temos que n é um pseudoprimo para a base b.
67
Capı́tulo 5 Fermat e Primalidade
68
Capı́tulo
6
Sistemas de Congruências
Neste capı́tulo veremos como resolver um sistema de congruências, utilizando o Teorema Chinês
do Resto, e encerraremos com uma aplicação deste resultado com um método de criptografia para
partilhar senhas.
ax ≡ b (mod n)
• a ∈ U (n)
• a∈
/ U (n)
ax ≡ b (mod n) ⇒ x ≡ αb (mod n)
Se n é primo e a 6≡ 0 (mod n), a equação ax ≡ b (mod n) sempre tem uma única solução em
Zn . Estudemos, então, o caso em que a não é inversı́vel em Zn . Neste caso estamos considerando
n composto.
ax ≡ b (mod n) (6.1)
Dizer que a não é inversı́vel em Zn equivale dizer que mdc(a, n) 6= 1. Se a equação (6.1) possui
solução, significa que b − ax é divisı́vel por n para algum inteiro x, ou seja, existem inteiros x e y
tais que
ax − b = ny ⇔ ax − ny = b (6.2)
69
Capı́tulo 6 Sistemas de Congruências
ax − ny = b
possui solução. Mas isto só é possı́vel se mdc(a, n) dividir b. Suponhamos que d = mdc(a, n)
divida b.
Sendo d um divisor de a, temos que a = d · a0 para algum inteiro a0 . Analogamente, b = d · b0
e n = d · n0 , para certos inteiros b0 e n0 . Substituindo isso em (6.2)
ax − ny = b ⇒ d · a0 x − d · n0 y = d · b0 ⇒ a0 x − n0 y = b0
a0 x ≡ b0 (mod n0 )
Chegamos, portanto, a uma nova equação congruência módulo n0 , um divisor de n. Note que
mdc(a0 , n0 ) = 1, pois
aα + nβ = d ⇒ a0 dα + n0 dβ = d ⇒ a0 α + n0 β = 1
o que nos leva a concluir que esta nova congruência sempre tem solução. Parece que simplificamos
o problema, mas é preciso ter mais cautela. Vejamos um exemplo.
Considere a congruência 6x ≡ 4 (mod 8). Como mdc(6, 8) = 2 6= 1, 6 não possui inverso em
Z8 ; entretanto, podemos substituir a congruência original por outra equivalente.
6x ≡ 4 (mod 8) ⇔ 6x − 4 = 8y ⇔ 3x − 2 = 4y ⇔ 3x ≡ 2 (mod 4)
Não há nada de errado com o que fizemos até aqui. Como vimos anteriormente, a nova
congruência admite solução. Entretanto estávamos interessados em soluções de uma equação
módulo 8, e acabamos com uma solução de uma equação módulo 4. O que fazer, então? Basta
transformar (6.3) em uma expressão entre inteiros, ou seja, sem congruências, e analisar como
estas soluções se comportam módulo 8.
x ≡ 2 (mod 4) ⇔ x = 2 + 4k
70
Equações Lineares Seção 6.1
x = 2 + 8m ⇔ x ≡ 2 (mod 8)
Três satélites passarão sobre uma certa cidade esta noite. O primeiro satélite
passará à 1h, o segundo às 4h, e o terceiro às 8h. Os perı́odos respectivos são de
13, 15 e 19 horas. Determine quantas horas decorrerão, a partir da meia-noite,
até que os três satélites passem juntos sobre a cidade.
Seja x o número de horas, contadas a partir da meia noite, quando os três satélites passarão
juntos sobre a cidade. O primeiro satélite passa a cada 13 horas a partir da 1h da madrugada.
Portanto, precisamos ter x = 13t + 1, para algum t positivo. Essa equação equivale à:
x ≡ 1 (mod 13)
x ≡ 4 (mod 15)
x ≡ 8 (mod 19)
Os três satélites passarão juntos sobre a cidade para valores de x que satisfaçam as três equações
simultaneamente. Portanto, precisamos resolver o seguinte sistema.
x ≡ 1 (mod 13)
x ≡ 4 (mod 15)
x ≡ 8 (mod 19)
As três equações possuem módulos diferentes, logo não podemos somá-las ou subtraı́-las entre
sı́. Transformaremos, como anteriormente, estas equações de congruências em relações entre in-
71
Capı́tulo 6 Sistemas de Congruências
teiros. x ≡ 1 (mod 13) equivale à x = 1+13t. Mas x é um inteiro, e portanto podemos subtituı́-lo
na segunda equação.
Note que qualquer inteiro da forma 79 + 195u satisfaz às duas primeiras equações do sistema.
Substituindo x = 79 + 195u na última equação do sistema chegamos à
u = 1 + 19v
Assim, qualquer valor de x da forma 274 + 3705v satisfaz as 3 equações. É claro que o menor
inteiro positivo de x que satisfaz o sistema é 274, ou seja, os 3 satélites passarão juntos sobre a
cidade 274 horas depois da meia-noite. E mais, esse fenômeno se repete a cada 3705 horas.
O que fizemos foi dividir o sistema original em outros sistemas de duas equações. Resolvendo
as duas primeiras equações obtivemos x = 79 + 195u, que corresponde a uma nova equação
x ≡ 79 (mod 195). Passamos, então, a resolver o sistema
(
x ≡ 79 (mod 195)
x ≡ 8 (mod 19)
De modo geral, um sistema de várias equações é resolvido utilizando-se vários sistemas de duas
equações. Por este motivo, é suficiente entendermos o algoritmo para resolver sistemas de duas
equações.
72
Equações Lineares Seção 6.1
Considere o sistema (
x ≡ a (mod m)
x ≡ b (mod n)
A primeira equação nos permite escrever
x = a + my , y ∈ Z
my ≡ b − a (mod n)
Já vimos que esta equação só tem solução se mdc(m, n) dividir b − a. Assumindo que
mdc(m, n) = 1, temos que m tem inverso em Zn . Seja α o inverso de m em Zn . Chegamos
a seguinte solução
y ≡ α(b − a) (mod n)
Se x e y são soluções, temos que x ≡ a (mod m) e y ≡ a (mod m). Como essas duas
congruências tem mesmo módulo, podemos subtrair uma da outra, de modo que obtemos
x − y ≡ 0 (mod m)
73
Capı́tulo 6 Sistemas de Congruências
ou seja, m divide x − y. Repetindo esse raciocı́nio, mas usando a segunda equação do sis-
tema, concluı́mos que n divide x − y. Se tivermos mdc(m, n) = 1, segue da segunda parte da
Proposição 2.1.3, do capı́tulo 2, que mn divide x − y, ou seja, se x e y são soluções de (6.4), então
x ≡ y (mod mn). O sistema (6.4) admite infinitas soluções inteiras, mas uma única solução em
Zmn . Este resultado é conhecido como
TEOREMA 6.1.1 (Teorema Chinês do Resto). Sejam m e n inteiros positivos, primos entre sı́. O
sistema (
x ≡ a (mod m)
x ≡ b (mod n)
sempre tem uma única solução em Zmn .
sempre admite uma única solução em Zmn se mdc(m, n) = 1. Mas o que acontece se não tivermos
a hipótese mdc(m, n) = 1? Vejamos alguns exemplos.
Considere o sistema
x ≡ 3 (mod 12)
x ≡ 19 (mod 8)
Vamos proceder da mesma maneira como anteriormente. A equação x ≡ 3 (mod 12) nos leva à
x = 3 + 12t. Substituindo na segunda equação, temos
12t = 16 + 8u.
3t = 4 + 2u
74
Potências Seção 6.3
que equivale à
3t ≡ 4 (mod 2).
t ≡ 0 (mod 2)
ou seja, t = 2k para algum inteiro k. Voltando à expressão que nos dá o valor de x, obtemos
Chegamos à uma única solução, mas módulo 24, e não módulo 8 · 12 = 96. Neste exemplo, o
sistema tinha solução. Vejamos o que acontece quando tentamos resolver o sistema
x ≡ 4 (mod 9)
x ≡ 3 (mod 6)
4 + 9t ≡ 3 (mod 6)
9t ≡ −1 ≡ 5 (mod 6)
Sabemos que a congruência ax ≡ b (mod m) possui solução se, e somente se, mdc(a, n) dividir
b. Como mdc(9, 6) = 3 e 3 6 |5, então 9t ≡ 5 (mod 6) não possui solução, e portanto o sistema
x ≡ 4 (mod 9)
x ≡ 3 (mod 6)
também não.
6.3 Potências
O Teorema Chinês do Resto pode ser enunciado para mais de duas equações.
TEOREMA 6.3.1. Sejam n1 , n2 , ..., nk inteiros positivos dois a dois primos entre sı́. Então o
sistema
x ≡ a1 (mod n1 )
x ≡ a2 (mod n2 )
..
.
x ≡ ak (mod nk )
75
Capı́tulo 6 Sistemas de Congruências
DEMONSTRAÇÃO. A demonstração é feita usando-se indução finita sobre k. Já vimos que o teorema
vale para k = 2. Suponhamos que o teorema valha para o inteiro k − 1, ou seja, o sistema
x ≡ a1 (mod n1 )
x ≡ a2 (mod n2 )
..
.
x ≡ ak−1 (mod nk−1 )
admite uma única solução bk−1 em Zn1 ···nk−1 . Resolver o sistema de k congruências é equivalente
a resolver o sistema
x ≡ bk (mod n1 · · · nk−1 )
x ≡ ak (mod nk )
Como ni e nj são primos entre sı́, sempre que i 6= j, temos que os dois inteiros n1 ...nk−1 e nk
também são primos entre sı́. Logo, o sistema acima admite uma única solução em Zn1 ···nk−1 ·nk ,
como querı́amos demonstrar.
Esta versão do Teorema Chinês do Resto simplifica o cálculo de potências módulo n em alguns
casos. Suponhamos que n = p1 p2 · · · pk , onde p1 < · · · < pk são primos. Dessa forma, temos que
cada fator primo pi aparece na decomposição de n com multiplicidade 1.
Para encontrarmos a forma reduzida de am módulo n, iniciamos com o teorema de Fermat para
calcular a forma reduzida de am módulo pi , para cada um dos fatores primos de n. Digamos que
am ≡ r1 (mod p1 ) e 0 ≤ r1 < p1
m
a ≡ r2 (mod p2 ) e 0 ≤ r2 < p2
..
.
am ≡ rk (mod pk ) e 0 ≤ rk < pk
Como todos os módulos são primos, temos que o máximo divisor comum entre dois quaisquer
76
Potências Seção 6.3
deles é 1, portanto o sistema sempre tem solução. E mais, o teorema nos garante que existe uma
única solução r módulo p1 p2 · · · pk = n. Portanto
am ≡ r (mod n)
Módulo 5: 24 ≡ 1 (mod 5)
Módulo 7: 26 ≡ 1 (mod 7)
Para tanto, usaremos o Algoritmo Chinês do Resto. A primeira equação nos dá x = 1 + 3t.
Substituindo na segunda equação, temos
77
Capı́tulo 6 Sistemas de Congruências
79 + 105v ≡ 5 (mod 11) ⇒ 105v ≡ −74 (mod 11) ⇒ 6v ≡ 3 (mod 11) ⇒ v ≡ 6 (mod 11)
o que equivale à
x ≡ 709 (mod 1155)
ou seja
26754 ≡ 709 (mod 1155)
Primeiramente, escolhemos um conjunto L de n inteiros positivos, dois a dois primos entre si.
Escolhidos tais inteiros, tomamos N igual ao produto dos k menores números de L e M igual ao
78
Partilha de Senhas Seção 6.4
produto dos k − 1 maiores números de L. Dizemos que este conjunto tem limiar k se
N >M
Note que o modo como construı́mos N e M nos garante que o produto de k ou mais elementos
de L é sempre maior do que N e o produto de menos que k elementos é sempre menor do que
M . Depois que construı́mos o conjunto L e os números N e M , escolhemos a senha s, de modo
que N > s > M . O conjunto S será composto pelos pares da forma (m, sm ), onde m ∈ L e sm é
a forma reduzida de s módulo m. Como s > M , segue que s > m para todo m ∈ L, e portanto
também temos que sm < s.
Suponha que mais de k funcionários estejam no banco. Isto significa que são conhecidos t
dentre os pares de S, com t ≥ k. Denotemos tais pares por (m1 , s1 ), ..., (mt , st ). Resolvendo o
sistema de congruências
x ≡ s1 (mod m1 )
x ≡ s2 (mod m2 )
..
.
x ≡ st (mod mt )
x0 ≡ s (mod m1 ...mt ).
Mas será que podemos afirmar que x0 = s? É neste momento que usamos o fato do conjunto L
ter limiar k. Como t ≥ k, segue que
m1 ...mt ≥ N > s.
Pelo Teorema Chinês do Resto, o sistema tem uma única solução menor que m1 ...mt . Mas s
também é solução do sistema e s < m1 ...mt , portanto s = x0 .
Nada nos impede de resolver o sistema no caso em que t < k. Entretanto, como o produto
de menos do que k módulos de L é sempre menor do que s, a solução que encontraremos será
congruente a s, mas pode não ser igual a s.
Façamos um exemplo numérico simples, apenas para fixarmos as ideias. Digamos que há 5
funcionários e que pelo menos 3 devem estar presentes para que o cofre possa ser aberto. Portanto,
o conjunto L deve ter 5 elementos, e seu limiar deve ser 3. Uma escolha simples para L, usando
primos pequenos é
L = {11, 13, 17, 19, 23}
79
Capı́tulo 6 Sistemas de Congruências
Finalmente, o que acontece se os funcionários que têm senhas (11, 7), (17, 1) e (23, 10) estão
no banco? Para recuperar a senha s devemos resolver o sistema
x ≡ 7 (mod 11)
x ≡ 1 (mod 17)
x ≡ 10 (mod 23)
Usando o algoritmo que discutimos nas primeiras seções deste capı́tulo, obtemos como solução geral
x = 953 + 4301k, onde k é um inteiro positivo. Portanto, x ≡ 953 (mod 4301), e recuperamos o
valor da senha s, a saber, s = 953.
80
Capı́tulo
7
Um Pouco de Estruturas Algébricas
7.1 Grupos
Seja G um conjunto não vazio e ∗ uma operação fechada em G. A estrutura (G, ∗) é um grupo se
a operação satisfaz as seguintes propriedades:
a ∗ (b ∗ c) = (a ∗ b) ∗ c
a∗e=e∗a=a
(3) Elemento Inverso: dado um elemento qualquer a ∈ G, existe um elemento a0 ∈ G tal que
a ∗ a0 = a0 ∗ a = e
Observe que não exigimos que a operação do grupo seja comutativa: a ∗ b = b ∗ a, ∀a, b ∈ G. Isto se
dá devido a existência de grupos interessantes que não satisfazem tal propriedades. Um exemplo
é o grupos das matrizes quadradas de ordem n inversı́veis com a operação de produto usual de
matrizes.
Há também associações “conjunto-operação” que não satisfazem alguma das operações acima, e
portanto, não são grupos. Por exemplo, o conjunto dos vetores no espaço com a operação produto
vetorial não satisfaz a propriedade associativa.
O número de elementos de um grupo é chamado de ordem desse grupo. Os primeiros grupos
que temos contato são de ordem infinita
• Z, Q, R e C com operação +.
81
Capı́tulo 7 Um Pouco de Estruturas Algébricas
• Mn×m , o conjunto das matrizes de ordem n × m com entradas reais (resp. complexas) com
operação +, soma usual de matrizes.
• O conjunto das matrizes reais (resp. complexas) inversı́veis com operação · produto usual
de matrizes.
• O conjunto de matrizes reais (resp. complexas) com determinante igual a 1 com operação ·
produto usual de matrizes.
O único grupo de ordem finita que vimos até o momento foi Zn com a soma. Este grupo tem
ordem n. Vamos ver outro grupo, de ordem também finita.
7.2 Simetrias
Os grupos podem ser utilizados no estudo das simetrias. A noção de simetria é relativamente
difı́cil de descrever com precisão. Para exemplificar, uma simetria de uma figura geométrica pode
ser entendida como uma “transformação que, quando aplicada à figura, não altera seu aspecto”.
Vamos descrever as simetrias de um triângulo equilátero. As primeiras transformações que
podemos imaginar são as rotações. Numerando os vértices do triângulo, temos as seguintes ro-
tações:
82
Simetrias Seção 7.2
Além das rotações, temos as reflexões em torno das mediatrizes. São três mediatrizes, que
demonimaremos por ma , mb e mc .
83
Capı́tulo 7 Um Pouco de Estruturas Algébricas
Já temos o conjunto, agora falta a operação. Neste caso, a operação é a composição de
transformações. A composição de funções é sempre associativa, logo já temos que a primeira
propriedade da operação de um grupo é satisfeita. O elemento neutro é a rotação de 0◦ . E quanto
aos inversos? O inverso da rotação de 120◦ é a rotação de 240◦ e vice-versa, e cada reflexão é sua
própria inversa. Portanto, todas as transformações acima têm inversa, e temos um grupo. Este
grupo é conhecido como D3 , e possui seis elementos, ou seja, tem ordem 6.
Usando a numeração dos vértices, podemos descrever cada transformação através da seguinte
notação: no caso da rotação de 120◦ , temos
!
1 2 3
2 3 1
Todas estas simetrias podem ser vistas como permutações dos vértices. Outro exemplo, a
reflexão em torno da mediatriz mb é descrita por
!
1 2 3
2 1 3
Vamos ver o que acontece quando operamos com essas transformações. Se ρ é a rotação de
120◦ , temos que
ρ2 = ρ · ρ
é a rotação de 240◦ , e ρ3 = e é o elemento neutro. Se σ é uma das reflexões, já sabemos que σ 2 = e.
Vejamos que transformação está associada à transformação σρ. Primeiramente, observemos que
σρ não pode ser uma rotação, ou seja,
σρ 6= e
σρ 6= ρ
σρ 6= ρ2
84
Simetrias Seção 7.2
σρ = e ⇒ σ(σρ) = σe ⇒ σ 2 ρ = σ ⇒ ρ = σ
σρ = ρ ⇒ (σρ)ρ2 = ρρ2 ⇒ σ = e
σρ = ρ2 ⇒ (σρ)ρ2 = ρ2 ρ2 ⇒ σ = ρ
Portanto σρ tem que ser uma reflexão. Entretanto σρ não pode ser a própria σ, pois
σρ = σ ⇒ σ(σρ) = σσ ⇒ ρ = e
Logo, σρ é uma reflexão diferente de σ. Vamos denotar por σi a reflexão em torno da mediatriz
mi , i = a, b, c. Pelo que discutimos até o momento, temos que σb ρ = σa ou σb ρ = σc . A rotação
ρ leva o vértice que está na posição 1 para a posição 2, e σb move o vértice da posição 2 para a
posição 1, ou seja
σb ρ(1) = 1
e portanto σb ρ é a reflexão que não afeta o vértice que está na posição 1, logo
σb ρ = σc
Usando propriedades básicas dos grupos, podemos descobrir outras relações entre elementos
de D3 a partir de σb ρ = σc . Se G é um grupo com operação ∗ e x, y ∈ G, então o inverso de x ∗ y
é y 0 ∗ x0 , onde x0 e y 0 são os inversos de x e y, respectivamente, pois
(x ∗ y) ∗ (y 0 ∗ x0 ) = x ∗ (y ∗ y 0 ) ∗ x = x ∗ e ∗ x0 = x ∗ x0 = e
σb ρ = σc = ρ2 σb 6= ρσb
85
Capı́tulo 7 Um Pouco de Estruturas Algébricas
e ρ ρ2 σa σb σc
2
e e ρ ρ σa σb σc
ρ ρ ρ2 e σc σa σb
2 2
ρ ρ e ρ σb σc σa
σa σa σb σc e ρ ρ2
σb σb σc σa ρ2 e ρ
σc σc σa σb ρ ρ2 e
A leitura desta tabela deve ser feita da seguinte forma: o resultado da operação x ∗ y está na
intersecção da linha que se inicia com x com a coluna que se inicia com y.
Assim, temos um conjunto, U (n), onde está definida uma operação, o produto de classes. Pre-
cisamos verificar que tal operação satisfaz as propriedades da definição de grupo. A associatividade
em U (n) segue da associatividade em Z e da definição de produto de classes. Se a, b ∈ U (n), temos
a·b=a·b=b·a=b·a
86
Grupos Aritméticos Seção 7.3
Vamos agora tentar determinar a ordem de U (n). Comecemos definindo uma função ϕ que,
a cada inteiro positivo n, associa outro inteiro positivo, a ordem de U (n). Esta é a função ϕ de
Euler ou função totiente. Assim a ordem de U (n) é denotada por ϕ(n).
Vejamos como calcular ϕ, inicialmente em alguns casos especiais. Seja p um inteiro primo.
Dessa forma, todos os inteiros positivos menores que p são primos relativos com p, logo
U (p) = Zp − {0}
portanto há pk−1 inteiros positivos menores que pk que são divisı́veis por p. Logo, há pk − pk−1
que não são divisı́veis por p, ou seja
Para obtermos uma fórmula geral, iniciaremos interpretando o Teorema Chinês do Resto em
forma de tabela. Sejam m e n inteiros tais que mdc(m, n)=1. Construı́mos uma tabela com m · n
casas. No alto da tabela, ao longo da horizontal, escrevemos os elementos de Zm , e a esquerda, ao
longo da vertical, os elementos de Zn . A casa da tabela que fica no encontro da coluna indexada
por a ∈ Zm com a linha indexada por b ∈ Zn será ocupada pelo inteiro x tal que:
(1) 0 ≤ x ≤ mn − 1
x0 ≡ a (mod m) x0 ≡ c (mod m)
e
x0 ≡ b (mod n) x0 ≡ d (mod n)
87
Capı́tulo 7 Um Pouco de Estruturas Algébricas
Mas por hipótese, a, c < m e b, d < n, e portanto |a − c| < m e |b − d| < n, o que nos permite
concluir que a − c ≡ 0 (mod m) e b − d ≡ 0 (mod n) se, e somente se, a = c e b = d, o que
contradiz a hipótese das casas serem distintas. Logo, duas casas de coordenadas distintas nunca
são preenchidas com um mesmo número.
Entendida esta interpretação do Teorema Chinês do Resto, vamos demonstrar a seguinte afir-
mação: digamos que x ∈ Zmn tem coordenadas (a, b) na tabela discutida anteriormente. Então
AFIRMAÇÃO: x ∈ U (nm) se, e somente se, a ∈ U (m) e b ∈ U (n).
DEMONSTRAÇÃO. Se x ∈ U (mn), então x tem inverso x0 ∈ U (mn), e portanto x·x0 ≡ 1 (mod mn),
ou seja, xx0 − 1 é divisı́vel por mn. Em particular, xx0 − 1 é divisı́vel por m, ou seja,
x · x0 ≡ 1 (mod m). Como x ≡ a (mod m), multiplicando ambos os lados da congruência
por x0 , obtemos 1 ≡ xx0 ≡ ax’.
Portanto a é inversı́vel em Zm , ou seja, a ∈ U (m). De maneira análoga concluı́mos que
b ∈ U (n).
Passemos a demonstração da recı́proca. Seja x ∈ Zmn e suponhamos que suas coordenadas
satisfazem a ∈ U (m) e b ∈ U (n). Precisamos mostrar que x é inversı́vel módulo mn. Seja a0 o
inverso de a em Zm , e b0 o inverso de b em Zn . Pelo Teorema Chinês do Resto, existe um inteiro
y tal que 0 ≤ y ≤ mn − 1 e
y ≡ a0 (mod m)
y ≡ b0 (mod n)
xy ≡ aa0 ≡ 1 (mod m)
e portanto xy − 1 é divisı́vel por n. Como mdc(m, n) = 1, temos que xy − 1 é divisı́vel por mn,
ou seja
xy ≡ 1 (mod mn)
ϕ(mn) = ϕ(m)ϕ(n).
88
Subgrupos Seção 7.4
U (mn). Pela afirmação anterior queremos contar o número de casas da tabela cujas coordenadas
estão em U (m) e U (n), respectivamente. Temos ϕ(m) colunas cujos ı́ndices estão em U (m), e
para cada uma dessas, temos ϕ(n) linhas cujo ı́ndice está em U (n). Portanto temos ϕ(m) · ϕ(n)
casas com as coordenadas em U (m) e U (n) respectivamente. Portanto
ϕ(mn) = ϕ(m)ϕ(n)
Feito isso, temos tudo o que é necessário para obter uma fórmula geral para ϕ(n). Dado um
inteiro n, primeiro fatore n.
n = pe11 · · · pekk
onde p1 < · · · < pk são primos distintos. Pelo teorema anterior, temos
Apesar de teoricamente simples, essa fórmula é limitada, pois para aplicá-la é necessário fatorar
n, que é um problema muito difı́cil.
7.4 Subgrupos
Seja G um grupo, e ∗ uma operação em G. Um subconjunto não vazio H de G é um subgrupo de
G se:
(1) ∀a, b ∈ H tem-se a ∗ b ∈ H
89
Capı́tulo 7 Um Pouco de Estruturas Algébricas
Nos grupos finitos é possı́vel estabelecermos relações entre a ordem do grupo e as ordem de
seus subgrupos. Vamos estudar uma dessas relações: o teorema de Lagrange. Para a prova deste
teorema, vamos usar relações de equivalência.
Seja G um grupo e H um subgrupo de G. Vamos definir uma relação de equivalência em G
usando H.
Sejam x e y elementos de G. Diremos que x e y são congruentes módulo H, x ≡ y (mod H),
se
x ∗ y0 ∈ H
onde y 0 é o inverso de y em G. Verifiquemos que esta relação é de fato uma relação de equivalência.
Sejam x, y, z ∈ G.
(1) Reflexividade: x ∗ x0 = e. Como e ∈ H (pois é subgrupo) temos que x ≡ x (mod H).
(2) Simetria: se x ≡ y (mod H) temos que x ∗ y 0 ∈ H. Mas como H é subgrupo, todos os seus
elementos possuem inverso em H. Mas o inverso de x ∗ y 0 é y ∗ x0 ∈ H, logo y ≡ x (mod H).
(3) Transitividade: digamos que x ≡ y (mod H) e y ≡ z (mod H). Isto significa que x∗y 0 ∈ H
e y ∗ z 0 ∈ H. Como ∗ é uma operação em H, temos que (x ∗ y 0 ) ∗ (y ∗ z 0 ) ∈ H, ou seja,
x ∗ z 0 ∈ H, e isto significa que x ≡ z (mod H).
Visto que a relação de congruência módulo H é uma relação de equivalência, vamos determinar a
classe de equivalência de um elemento x ∈ G. Por definição,
x = {y ∈ G : y ≡ x (mod H)}
Mas y ≡ x (mod H) é equivalente à dizer que y ∗ x0 ∈ H, isto é, existe um elemento h ∈ H tal
que y ∗ x0 = h ⇔ y = h ∗ x. Sendo assim, podemos escrever a classe de equivalência de x como
{h ∗ x : h ∈ H}
Note que a classe do elemento neutro é o próprio H. Usaremos a notação Hx para a classe de
equivalência de um elemento x. A relação de congruência modulo H é uma generalização da
relação de congruência módulo n nos números inteiros. No caso particular destes, temos que
G = Z, a operação é a adição e o subgrupo H é Zn = {n · k : k ∈ Z}. Agora temos condições de
demonstrar o
TEOREMA 7.4.1 (Teorema de Lagrange). Em um grupo finito, a ordem de qualquer subgrupo
divide a ordem do grupo.
DEMONSTRAÇÃO. Seja G um grupo finito com operação ∗, e seja H um subgrupo de G. Precisamos
contar quantos elementos tem H. Primeiramente, vamos mostrar que, para um dado x ∈ H, Hx
e H tem o mesmo número de elementos.
90
Subgrupos Seção 7.4
É claro que Hx não pode ter mais elementos do que H, visto que para obter Hx, multiplicamos
cada elemento h ∈ H por um elemento fixo x ∈ G. Além disso, Hx não pode ter menos elementos
do que H, pois para isso acontecer seria necessário dois elementos distintos h1 , h2 ∈ H de modo
que h1 ∗ x = h2 ∗ x, mas esta equação nos levaria a concluir que h1 = h2 , multiplicando à esquerda
por x0 .
Sabemos que G é a reunião de todas as classes de equivalência. Visto que duas classes ou são
iguais ou são disjuntas, o número de elementos de G é igual a soma do número de elementos de
cada classe (classes disjuntas).
Mas mostramos que qualquer classe tem o mesmo número de elementos, e esse número é a
ordem de H.
Sendo assim, o número de elementos de G é igual a ordem de H vezes o número de classes, ou
seja, a ordem de H é um divisor da ordem de G.
Seja G um grupo, e S um subconjunto não vazio de G. Denotaremos por S −1 = {s−1 |s ∈ S}.
Vamos definir um conjunto usando S, e na sequência mostraremos que este conjunto é um subgrupo
de G. Faremos uso da notação multiplicativa.
.
hSi = {a1 a2 · · · an |n ∈ N, ai ∈ S ou ai ∈ S −1 }
Entendamos quem são elementos de hSi. Um elemento de hSi é igual ao produto de uma
quantidade finita de elementos de G, de modo que cada fator deste produto ou é um elemento de
S ou é o inverso de um elemento de S.
(3) Para todo a ∈ hSi, seu inverso a−1 também está em hSi
a = a1 a2 · · · an com ai ∈ S ou ai ∈ S −1 , ∀i
b = b1 b2 · · · bm com bj ∈ S ou bj ∈ S −1 , ∀j.
91
Capı́tulo 7 Um Pouco de Estruturas Algébricas
e = a · a−1
hgi = {g t |t ∈ Z}.
Feita essa discussão, podemos definir grupo cı́clico e provar um resultado que relaciona a ordem
de um elemento g de um grupo G com a ordem do subgrupo gerado por esse elemeno g ∈ G.
DEFINIÇÃO 7.4.4. Um grupo G é cı́clico quando ele pode ser gerado por um único elemento, isto
é, quando G = hgi para algum g ∈ G.
DEMONSTRAÇÃO. Se G é cı́clico, significa que existe g ∈ G tal que hgi = G, isto é,
∀x ∈ G, ∃t ∈ Z : g t = x.
Sejam x e y dois elementos quaisquer de G. Por hipótese existem inteiros r e s tais que
g r = x e g s = y.
92
Subgrupos Seção 7.4
ou seja, G é abeliano.
Como consequência deste resultado temos, por exemplo, que o grupo D3 que vimos na segunda
seção não é cı́clico, pois não é abeliano.
Recordando: sendo G um grupo, a ordem de um elemento g ∈ G é o menor inteiro positivo
k tal que ak = e, onde e é o elemento neutro do grupo G; e a ordem de um subgrupo H < G
é o número de elementos de H. Usaremos as notações |g| e |H| para denotar as ordens de um
elemento e de um subgrupo de G, respectivamente. Temos a seguinte proposição:
DEMONSTRAÇÃO. Suponha que |g| = k, ou seja, k é o menor inteiro positivo tal que g k = e.
Vamos mostrar que hgi tem k elementos. Da definição de subgrupo gerado, temos que
Seja A = {e, g, g 2 , ..., g k−1 }. Afirmamos que hgi = A. A inclusão A ⊂ hgi é trivial. Basta
mostrarmos que hgi ⊂ A. De fato, seja s um inteiro. Dividindo s por k, e obtemos inteiros q e r,
com 0 ≤ r ≤ k − 1, e
s = kq + r
e daı́
g s = g kq+r = (g k )q · g r = g r
mas isso contradiz a minimalidade de k. Dessa forma, A tem k elementos e A = hgi. Portanto a
ordem de hgi é k.
Para encerrar o capı́tulo, vamos mostrar o teorema de Euler, generalização do teorema de
Fermat e consequência do teorema de Lagrange.
TEOREMA 7.4.7 (Teorema de Euler). Sejam n > 0 e a números inteiro. Se mdc(a, n) = 1 então
aϕ(n) ≡ 1 (mod n)
93
Capı́tulo 7 Um Pouco de Estruturas Algébricas
DEMONSTRAÇÃO. Como a e n são primos entre sı́, a ∈ U (n). Logo, a ordem de a divide a ordem
de U (n), que é ϕ(n). Sendo k a ordem de a, isto significa que ϕ(n) = kr, para algum inteiro r.
Desse modo
(a)ϕ(n) = (ak )r = 1
94
Capı́tulo
8
De Volta à Mersenne e Fermat
Já vimos que as fórmulas exponenciais são aquelas que mais nos rendem resultados (ou pelo
menos esperança de) quando estamos interessados em produzir primos “grandes”. Neste capı́tulo
estudaremos mais um pouco sobre os números de Mersenne e de Fermat. Vamos procurar primos
entre os números da forma 2n ± 1.
M (n) = 2n − 1
ou seja, M (r) é fator de M (n) = M (rs). É claro que M (s) também é fator de M (n).
Sendo assim, se queremos encontrar primos entre os números de Mersenne, procurá-los-emos
somente entre os números M (p), com p primo. Já sabemos também que a primalidade de p não
garante a primalidade de M (p).
Vamos discutir um método, devido à Fermat, para buscar fatores de um número de Mersenne.
A ideia é descobrir uma fórmula geral para os primos que podem ser fatores de um número de
Mersenne. Vamos usar ferramentas desenvolvidas no capı́tulo anterior, da teoria dos grupos.
Começamos por um resultado, complementar ao teorema de Lagrange, que já fora citado e usado
na demonstração do teorema de Korselt (TEOREMA 5.4.3, p. 61).
LEMA 8.1.1 (Lema Chave).Seja G um grupo finito, munido de uma operação ∗. Sendo a ∈ G, um
inteiro positivo t satisfaz at = e se, e somente se, t é divisı́vel pela ordem de a.
95
Capı́tulo 8 De Volta à Mersenne e Fermat
at = asr = (as )r = er = e
Para provar a recı́proca, suponha que at = e. Como a ordem de a é o menor inteiro positivo s tal
que as = e, devemos ter s ≤ t. Dividindo t por s, encontramos inteiros q e r tais que
t = s · q + r, 0 ≤ r < s
Dai
e = at = (as )q ∗ ar = ar
visto que as = e. Como ar = e e r < s, só podemos ter r = 0, caso contrário terı́amos uma
contradição à minimalidade de s. Portanto t é divisı́vel pela ordem de a.
Vamos, então, aos números de Mersenne. Seja p 6= 2 um número primo e seja q um fator primo
de M (p) = 2p − 1. Então 2p − 1 = q · s, para algum inteiro s, ou seja
2p ≡ 1 (mod q)
Esta congruência pode ser vista como uma identidade no grupo U (q).
p
2 =1
Pelo lema chave, a ordem de 2 tem que dividir p. Como p é primo, temos que a ordem de 2 em
U (q) é 1 ou p.
Se a ordem de 2 fosse 1, terı́amos
2=1
em U (q). Mas isto significaria 2 ≡ 1 (mod q), ou seja, q|2 − 1, absurdo, pois q 6= 1. Sendo assim,
a ordem de 2 em U (q) é p.
Por outro lado, pelo teorema de Fermat,
q−1
2 = 1 em U (q)
Mais uma vez, pelo lema chave, a ordem de 2, que já sabemos ser p, divide q − 1, ou seja, existe
um inteiro k tal que q − 1 = kp. Mas podemos concluir mais.
Como M (p) = 2p − 1 é um número ı́mpar, todos os fatores de M (p) devem ser ı́mpares. Em
particular, q é ı́mpar, e portanto q − 1 é par. Como p é ı́mpar, concluı́mos que k, na equação
acima, deve ser par, e portanto q − 1 = 2rp para algum inteiro r. Está demonstrado o seguinte
resultado.
96
Números de Fermat Seção 8.2
e portanto
p/2 2p/2 − 1
1 + 2rp < 2 ⇒r<
2p
Quando p = 11, obtemos r < 2, 011.... Portanto devemos testar apenas r = 1 e r = 2. Muito
eficiente. Fazendo r = 1 temos q = 1 + 22 · 1 = 23, que é fator de 2047.
2047 = 23 · 89
e portanto
2n
2 = 1 em U (p)
n
Disto temos que a ordem de 2 em U (p) divide 2n. Note que da primeira equação, 2 = −1, a
ordem de 2 não pode ser n, e nem um divisor de n. Como ela deve dividir 2n, temos que a ordem
de 2 deve ser um múltiplo de 2. Digamos que a ordem de 2 seja 2r, com r um inteiro positivo
divisor de n. Assim
2r
2 = 1 em U (p)
Daı́,
2r r r
0 = 2 − 1 = (2 + 1)(2 − 1)
97
Capı́tulo 8 De Volta à Mersenne e Fermat
2r ≡ 1 (mod p) ou 2r ≡ −1 (mod p)
p−1 2n
2 =2 = 1 em U (p)
2k 2k+1
2 = −1 em U (q) ⇒ 2 = 1 em U (q)
O lema chave nos permite concluir que a ordem de 2 divide 2k+1 . Da equação
2k
2 = −1 em U (q)
concluı́mos que a ordem de 2 não pode ser uma potência menor que 2k+1 . Portanto a ordem de 2
em U (q) é exatamente 2k+1 . Como q é primo, temos que
q−1
2 = 1 em U (q)
e concluı́mos que a ordem de 2 em U (q), 2k+1 , divide q − 1, ou seja, q − 1 = r · 2k+1 para algum
r inteiro. O raciocı́nio que desenvolvemos é parecido com o que Fermat fez para os números de
Mersenne, mas ironicamente foi Euler quem desenvolveu esse método, apenas adaptanto para os
números de Fermat o que o francês havia feito para os números de Mersenne.
Método de Euler: Se q é um fator primo de F (k), então existe um inteiro positivo r tal que
q = 1 + r · 2k+1
98
O método de Lucas-Lehmer Seção 8.3
S0 = 4 e Sk+1 = Sk2 − 2
Primeiramente, vamos verificar que qualquer elemento da sequência se escreve como potência
de números irracionais.
√ √
Considere w = 2 + 3 e v = 2 − 3. Vamos mostrar que
n n
Sn = w2 + v 2 . (8.1)
n n
Obviamente, w + v = S0 , e portanto a relação vale para n = 0. Suponha que Sn = w2 + v 2 .
Elevando os dois membros ao quadrado, obtemos
n n n n
Sn2 = (w2 )2 + 2 · w2 · v 2 + (v 2 )2
n+1 n n+1
= w2 + 2(wv)2 + v 2
√ √ √ 2
Como wv = (2 + 3)(2 − 3) = 22 − 3 = 4 − 3 = 1, temos
Mas Sn2 − 2 = Sn+1 por definição. Portanto, pelo princı́pio de indução finita
n n
w2 + v 2 = Sn ∀n ∈ N
Antes de demonstrar o teste, vamos introduzir novos grupos que serão úteis para a demons-
tração.
√
Considere o conjunto Z 3 definido por
h√ i √
Z 3 = {a + b 3 : a, b ∈ Z}
√
A soma e a multiplicação em Z 3 serão as mesmas que estamos habituados em R. Note que
√ √
qualquer inteiro a pode ser escrito como a + 0 · 3, logo Z ⊂ Z 3 . A soma e o produto de dois
√ √
elementos de Z 3 ainda é um elemento de Z 3 .
√ √ √
(a + b 3) + (c + d 3) = (a + c) + (b + d) 3
√ √ √
(a + b 3)(c + d 3) = (ac + 3bd) + (ad + bc) 3
√
Note que Z 3 é um grupo com respeito à soma: a operação + é evidentemente associativa,
√ √ √ √
0 + 0 3 é o elemento neutro, e o elemento inverso de a + b 3 é −(a + b 3) = (−a) + (−b) 3
99
Capı́tulo 8 De Volta à Mersenne e Fermat
Temos que
(1) 0 = q · 0 ∈ I(q)
√
(2) qα + qβ = q(α + β) ∈ I(q), ∀α, β ∈ Z 3
√ √ √
(3) se qα ∈ I(q), então α ∈ Z 3 , e como Z 3 é grupo, então −α ∈ Z 3 , e portanto
−(qα) = q(−α) ∈ I(q).
√
portanto I(q) é um subgrupo do grupo aditivo Z 3 .
Do que vimos no capı́tulo anterior, temos que a relação de congruência módulo I(q) é uma
√ √
relação de equivalência em Z 3 . Recordando: dados α, β ∈ Z 3 , então α ≡ β (mod I(q))
quando α − β ∈ I(q)
√
Seja α ∈ Z 3 . Então α se escreve como
√
α = a1 + a2 3
a1 = q · b1 + r1 , 0 ≤ r1 < q
a2 = q · b2 + r2 , 0 ≤ r2 < q
√
Sabemos que r1 e r2 são determinados de maneira única. Defina ρ = r1 + r2 3. Daı́,
√ √
α − ρ = (a1 + a2 3) − (r1 + r2 3)
√ √
= (qb1 + r1 ) + (qb2 + r2 ) 3 − r1 − r2 3
√
= q(b1 + b2 3)
Portanto α ≡ ρ (mod I(q)). O número ρ será chamado de forma reduzida de α módulo I(q). Da
√
unicidade do resto da divisão euclidiana, segue que cada elemento de Z 3 tem uma única forma
√ √
reduzida. Se ρ = r1 + r2 3 é a forma reduzida de um elemento de Z 3 , note que 0 ≤ r1 , r2 < q,
ou seja, r1 pode assumir q valores, assim como r2 . Portanto há exatamente q 2 formas reduzidas
√
distintas módulo I(q) em Z 3 .
√
Além disso, cada classe de equivalência de Z 3 módulo I(q) pode ser representada por
um elemento em forma reduzida, e duas classes representadas por elementos de formas reduzi-
√ .
das distintas são obrigatoriamente distintas. Portanto o conjunto Z 3 I(q) das classes de
equivalência módulo I(q) tem q 2 elementos.
100
O método de Lucas-Lehmer Seção 8.3
√
Denotaremos a classe de α ∈ Z 3 módulo I(q) por α
e. Vamos definir uma multiplicação em
√ .
Z 3 I(q) por
e · βe = α
α ] ·β
Primeiramente, verifiquemos que tal operação está bem definida: sejam α e α0 representantes
e, e β e β 0 representantes da classe β.
da classe α e Note que
αβ − α0 β 0 = αβ − α0 β + α0 β − α0 β 0
= β(α − α0 ) + α0 (β − β 0 ) ∈ I(q)
Temos que h√ i .
V (q) ⊂ Z 3 I(q)\{e
0}
TESTE 8.3.1 (Teste de Lucas-Lehmer). Seja p um primo positivo. O número de Mersenne M (p) é
primo se, e somente se, Sp−2 ≡ 0 (mod M (p)).
Provaremos apenas que a condição é necessária. Para uma demonstração completa, sugerimos
consultar [02].
DEMONSTRAÇÃO. Suponha que, para algum primo p, o número de Mersenne M (p) = 2p − 1 divide
Sp−2 . Por (8.1) existe um inteiro r tal que
p−2 p−2
w2 + v2 = rM (p)
101
Capı́tulo 8 De Volta à Mersenne e Fermat
p−2
Multiplicando esta equação por w2 , e relembrando que wv = 1, obtemos
p−1 p−2
w2 + 1 = rM (p)w2 . (8.2)
Suponha, agora, que M (p) é composto e que q é seu menor fator primo, e vamos tentar chegar a
uma contradição. Como q divide M (p), obtemos a partir de (8.2) que
p−1
e2
w = −e
1 (8.3)
√ .
em Z 3 I(q). Elevando ambos os membros de (8.3) ao quadrado
p
e2 = e
w 1.
Segue disto, e do lema chave, que a ordem de we tem que dividir 2p ; mas a equação (8.3) também
nos diz que esta ordem não pode ser uma potência de 2 menor que 2p . Portanto, a ordem de w e
p
em V (q) é 2 . Mas pelo teorema de Lagrange, a ordem de we divide a ordem de V (q). Como V (q)
tem ordem menor ou igual a q 2 − 1, concluı́mos que 2p ≤ q 2 − 1. Entretanto, q é o menor divisor
primo de M (p), de modo que q 2 ≤ M (p). Assim
que é a contradição desejada. Com isso, se M (p) divide Sp−2 então M (p) é primo.
102
Capı́tulo
9
Raı́zes Primitivas
No capı́tulo anterior vimos métodos que nos permitem investigar se números de Mersenne e
Fermat são primos ou compostos. Mas, e se tomarmos um inteiro n qualquer? No capı́tulo 5,
vimos testes que detectavam inteiros n compostos. Agora, veremos um teste que identifica a
primalidade de um inteiro n sem tentar encontrar fatores de n. Este teste é inspirado no teorema
da raiz primitiva, assunto já citado no capı́tulo 4. Neste capı́tulo iremos finalmente provar este
resultado.
n−1 r
b = 1 e b 6= 1 sempre que r < n − 1
Lembrando que denotamos a ordem de U (n) por ϕ(n), pelo teorema de Lagrange a ordem de b,
que é n − 1, divide ϕ(n), e portanto n − 1 ≤ ϕ(n). Mas ϕ(n) ≤ n − 1, pela própria definição da
função ϕ. Concluı́mos desse modo que ϕ(n) = n − 1, e isso só é possı́vel se n for primo.
Portanto, a chave está em encontrar b ∈ U (n) com ordem n − 1. O seguinte teste nos dá uma
maneira de mostrar que a ordem de um elemento de U (n) é n − 1.
n−1
b = 1.
103
Capı́tulo 9 Raı́zes Primitivas
n − 1 = k · t.
Portanto, basta mostrarmos que t = 1. Suponha, por absurdo que t > 1. Então t é divisı́vel por
algum primo q (t = qs para algum inteiro s).
n−1 t
Temos também que q divide n − 1, portanto e são inteiros. E mais, visto que
q q
n−1 t
=k·
q q
n−1
concluı́mos que k divide . Como k é a ordem de b, pelo lema chave
q
n−1
b q ≡ 1 (mod n)
Apesar de uma demonstração simples, o teste de Lucas apresenta uma pequena dificuldade
quanto a aplicação. Vamos explicitar tal dificuldade com um exemplo simples. Apliquemos o teste
para n = 41
n = 41 → n − 1 = 40 = 23 · 5 → fatores primos 2 e 5.
b8 6≡ 1 (mod 41)
mas
220 ≡ 1 (mod 41).
104
O teste de Lucas Seção 9.1
Mas
38 ≡ 1 (mod 41)
ou seja, bases diferentes satisfazem equações relativas a fatores diferentes de n − 1. Mas o teste
exige que uma única base satisfaça todas as equações. Entretanto, o teste de Lucas pode ser
melhorado, de modo que podemos escolher uma base distinta para cada fator primo de n − 1.
onde p1 < · · · < pr são primos. Se para cada i = 1, ..., r existir um inteiro positivo bi ,
2 ≤ bi ≤ n − 1, que satisfaça
bin−1 ≡ (mod n)
n−1
pi
bi 6≡ 1 (mod n)
então n é primo.
b1n−1 ≡ 1 (mod n)
s1 = pk11 · · · pkr r
b1p1 6≡ 1 (mod n)
n−1
ou seja, não é divisivel por s1 . Como
p1
n−1
= pe11 −1 · pe22 · · · perr
p1
só podemos ter k1 = e1 , e portanto pe11 divide s1 . Pelo teorema de Lagrange, s1 divide a ordem de
105
Capı́tulo 9 Raı́zes Primitivas
U (n).
pe11 |s1 e s1 |ϕ(n) ⇒ pe11 |ϕ(n)
O raciocı́nio anterior se aplica à qualquer i = 1, ..., r. Temos então que as equações do teste nos
permitem concluir que os inteiros pe11 , pe22 , ..., perr dividem ϕ(n). Como esses inteiros são potências
de primos distintos, eles são primos entre sı́, e portanto o produto
divide ϕ(n). Como ϕ(n) ≤ n − 1, só resta uma possibilidade, ϕ(n) = n − 1, ou seja, n é primo.
Como dissemos no inı́cio do capı́tulo, o teste de Lucas tem origem no teorema da raiz primitiva.
Este resultado é alvo da nossa próxima seção.
LEMA 9.2.1. Seja G um grupo abeliano finito, munido de uma operação ∗. Se G tem elementos de
ordens r e s, então G tem um elemento cuja ordem é igual ao mı́nimo múltiplo comum de r e s.
s = pf11 · · · pfkk
onde os primos não estão necessariamente enumerados em ordem crescente. Além disso, isso não
significa que r e s tem os mesmos fatores. Se um fator pi de r não é fator de s, isso significa que
fi = 0. Na verdade, é conveniente que enumeremos os primos de modo que para um inteiro g,
1 ≤ g ≤ k, tenhamos
ou seja, os expoentes dos g primeiros primos na fatoração de r são maiores ou iguais aos expoentes
correspondentes na fatoração de s, e os expoentes dos primos restantes são menores na fatoração
de r do que na de s.
Agora, definimos
f
r0 = pe11 · · · pegg e s0 = pg+1
g+1
· · · pfkk
106
Teorema da Raiz Primitiva Seção 9.2
Obviamente, temos mdc(r0 , s0 ) = 1. Por outro lado, r0 s0 é o produto de potência dos primos
p1 , ...pk , onde cada primo pi aparece com o maior expoente entre ei e fi , ou seja, r0 s0 é o mı́nimo
múltiplo comum de r e s. Como r0 |r e s0 |s, existem inteiros u e v tais que
r = r0 u
s = s0 v
Na segunda igualdade acima está sendo usada a hipótese de G ser abeliano, pois se x, y ∈ G
(x ∗ y)q = xq ∗ y q
e = cn = aun ∗ bvn .
0 0 0
e = (ar u )n ∗ bvnr = bvnr
pois r0 u = r é a ordem de a. Pelo lema chave, a ordem de b, que é s, divide vnr0 . Mas s = s0 v, ou
seja, s0 divide nr0 . Como s0 e r0 são primos entre sı́, concluı́mos que s0 divide n. Com raciocı́nio
análogo, invertendo os papéis de a e b e de r e s, concluı́mos que r0 também divide n. Daı́,
r0 |n
0
s |n ⇒ r0 s0 |n ⇔ m|n
mdc(r0 , s0 ) = 1
Mas se m|n e n|m, só nos resta concluir que m = n, e c de fato é o elemento que procurávamos.
107
Capı́tulo 9 Raı́zes Primitivas
são soluções de xk1 = 1. Mas H possui k1 elementos, e portanto em H estão todas as soluções de
xk1 = 1. Como k1 < p − 1, existe um elemento b ∈ U (p) que não está em H e não é solução de
xk1 = 1, isto é,
k1
b 6≡ 1.
Desta última expressão e do lema chave, concluı́mos que se r é a ordem de b, então r não divide
k1 . Se r = p − 1, então b é um gerador de U (p).
Se r < p − 1, usando o lema anterior construı́mos um elemento a2 que tem ordem
k2 = mmc(k1 , r). Como r 6 |k1 , temos k2 > k1 .
Repetindo o que fizemos com a1 para o inteiro a2 , e assim sucessivamente, construiremos uma
sequência estritamente crescente
k1 < k2 < k3 < · · ·
de inteiros que são ordens de elementos de U (p), ou seja, ki ≤ p − 1 ∀i. Isso nos garante que
encontraremos um elemento aj com |aj | = p − 1, e portanto este inteiro aj será um gerador de
U (p), ou seja, U (p) é cı́clico.
A demonstração do teorema da raiz primitiva não apenas nos garante a existência de um
gerador de U (p) quando p é primo, mas ela nos diz como construir tal gerador.
Para exemplificar vamos determinar uma raiz primitiva (gerador) de U (73). Procederemos
como na demostração do teorema. Porém, antes de iniciarmos, precisamos de um método (algo-
ritmo) para calcular a ordem de um elemento de U (p).
Seja p primo e a ∈ U (p). Seja k a ordem de a. Pelo teorema de Lagrange, k divide a ordem
de U (p). Neste caso, k|p − 1. Para aplicar um método usado por Gauss, precisamos fatorar p − 1.
Digamos que
p − 1 = q1e1 · · · qm
em
onde q1 < · · · < qm são primos e e1 , ..., em são inteiros positivos. Se k divide p − 1, então existem
inteiros não negativos r1 , ..., rm tais que
k = q1r1 · · · qm
rm
108
Teorema da Raiz Primitiva Seção 9.2
módulo p. Pelo teorema de Fermat, o primeiro termo dessa sequência é sempre 1. Seja wi o
maior inteiro não negativo tal que
wi
a(p−1)/qi ≡ 1 (mod p) (9.1)
p−1
Do lema chave e da equação (9.1) que caracteriza wi , temos que k divide . Além disso, de
qiwi
p−1
(9.2) concluı́mos que k não divide . Escrevendo de outra forma, o inteiro k = q1r1 · · · qiri · · · qm
rm
qiwi +1
divide
p−1
q1e1 · · · qiei −wi · · · qm
em
=
qiwi
mas não divide
p−1
q1e1 · · · qiei −wi −1 · · · qm
em
=
qiwi +1
o que nos leva à ri = ei − wi . Para esclarecer o que foi feito, passemos ao exemplo. Queremos
determinar uma raiz primitiva de U (73). Portanto temos
p = 73 → ϕ(p) = p − 1 = 72 = 23 · 32
Na demonstração do teorema da raiz primitiva, a primeira coisa que fizemos foi escolher um
elemento a1 ∈ U (p). Para “facilitar” as contas inicialmente, vamos escolher a1 = 2. Vamos agora
calcular a ordem de 2 usando o que discutimos anteriormente.
x
Determinando r1 : 2(p−1)/2 , x = 1, 2, 3.
72
36 7
• x = 1 −→ 2 2 = 2 = (2 )5 · 2 = 37 · 2 = 1
72
18
• x = 2 −→ 2 22 = 2 =1
72
9
• x = 3 −→ 2 23 = 2 = 1
109
Capı́tulo 9 Raı́zes Primitivas
72
8
• x = 2 −→ 2 9 = 2 = 37
|2| = 20 · 22 = 9 6= 72 = p − 1.
Como |2| =
6 72, precisamos escolher outro inteiro b de modo que b ∈
/ h2i.
|3| = 22 · 31 = 12 6= 72 = p − 1.
Como |b| 6= 72, vamos usar a1 = 2 e b = 3 para gerar a2 . Para isso, usaremos o lema, e
v
obteremos |a2 | = mmc(12, 9) = 36. a2 = a1 u · b , onde u · v = mdc(|a1 |, |b|) = mdc(12, 9) = 3 e
mdc(u, v) = 1. Fazendo uso da notação que usamos na demonstração do lema, temos
|2| = r = 32 ⇒ r0 = 32 ⇒ u = 1
|3| = s = 3 · 22 ⇒ s0 = 22 ⇒ v = 3
110
Teorema da Raiz Primitiva Seção 9.2
1 3
Daı́, a2 = 2 · 3 = 54. Já sabemos que |54| = 36.
h54i = {1, 54, 69, 3, 16, 61, 9, 48, 37, 27, 71, 38, 8, 67, 41, 24, 55, 50,
72, 19, 4, 70, 57, 12, 64, 25, 36, 46, 2, 35, 65, 6, 32, 49, 18, 23}
111
Capı́tulo 9 Raı́zes Primitivas
112
Capı́tulo
10
Criptografia RSA
Este método de criptografia, o mais conhecido dos métodos de chave pública, foi inventado
em 1978 por R. L. Riverst, A. Shamir e L. Adleman. As letras RSA correspondem às iniciais dos
inventores do código. Finalmente podemos descrever o funcionamento do RSA e entender porque
é seguro.
10.1 Pré-codificação
A primeira coisa que devemos fazer para usar o RSA é transformar a mensagem em uma sequência
de números. Vamos fazer um exemplo onde a mensagem contém apenas letras. Esta primeira
etapa será chamada de pré-codificação. Usaremos a seguinte tabela para convertermos letras em
números:
A B C D E F G H I J K L M
10 11 12 13 14 15 16 17 18 19 20 21 22
N O P Q R S T U V W X Y Z
23 24 25 26 27 28 29 30 31 32 33 34 35
Usaremos o número 99 para substituir o espaço entre palavras. Por exemplo, a frase Matemática
é divertida gera o número
m = 22102914221029181210991499131831142729181310.
22−102−91−42−2−102−91−8−12−10−9−91−49−91−31−83−11−42−72−91−81−3−10
113
Capı́tulo 10 Criptografia RSA
Essa quebra pode ser feita de várias maneiras, mas alguns cuidados devem ser tomados. Por
exemplo, deve-se evitar que o bloco comece por 0, pois isso traria problemas na decodificação.
Em termos de aritmética modular, temos que C(b) é a forma reduzida de be módulo n. Vamos
codificar os blocos da nossa mensagem.
114
O RSA funciona? Seção 10.3
m : 22−102−91−42−2−102−91−8−12−10−9−91−49−91−31−83−11−42−72−91−81−3−10
C(m) : 22 − 119 − 130 − 81 − 128 − 119 − 130 − 57 − 12 − 10 − 48 − 130 − 36 − 130 − 125 − 8 − 132 − 81 − 19 − 130 − 16 − 42 − 10
ou seja, o inverso de 7 módulo 120 é -17. Como d será expoente de potências, precisamos de d > 0.
Portanto d = −17 + 120 = 103.
Por exemplo, para decodificar o bloco 8 da mensagem codificada, precisamos calcular a forma
reduzida de 8103 módulo 143.
recuperando corretamente o bloco original. Para blocos maiores, teremos dificuldade com os
cálculos se nos restringirmos à lapis e papel, faz-se necessário o uso de um sistema de computação
algébrica.
115
Capı́tulo 10 Criptografia RSA
Da definição de D e C temos
Mas d é o inverso de e módulo ϕ(n), e portanto existe um inteiro k de modo que ed = 1 + kϕ(n).
Substituindo em (10.1), obtemos
Lembrando que o teorema de Euler no diz que bϕ(n) ≡ 1 (mod n), concluı́mos que bed ≡ b (mod n),
e portanto
D(C(b)) ≡ b (mod n),
Usamos o teorema de Euler, mas este teorema tem por hipótese que mdc(b, n) = 1. Mas no
nosso caso, é dificil sabermos se isto acontece. De fato, b pode ser qualquer inteiro entre 1 e n − 1.
Precisamos, então provar a congruência sem recorrer ao teorema de Euler.
Como n = pq, com p e q primos distintos, vamos calcular a forma reduzida de bed módulo p e
módulo q. Vamos fazer os cálculos para o primo p. As contas são análogas para q. Já sabemos
que
ed = 1 + kϕ(n) = 1 + k(p − 1)(q − 1)
logo
bed ≡ b · (bp−1 )k(q−1) (mod p)
Vamos usar o teorema de Fermat. Para tanto, suponha que p não divide b. Então
bp−1 ≡ 1 (mod p), o que nos permite concluir que
bed ≡ b (mod p)
Portanto bed − b é divisı́vel por p e por q. Como p e q são primos distintos, temos que
116
Segurança do RSA Seção 10.5
bed ≡ b (mod n)
mostrando de fato que o método funciona. Nos resta considerar apenas sua segurança.
ϕ(n) = (p − 1)(q − 1) = pq − p − q + 1 = n − (p + q) + 1
ou seja
p
p−q = (p + q)2 − 4n
117
Capı́tulo 10 Criptografia RSA
Ao longo deste texto vimos vários testes e algoritmos para testar se um inteiro n dado é primo ou
composto. Também vimos que para uma implementação segura do RSA, precisamos de primos p
e q grandes, para que a fatoração de n = pq seja difı́cil.
Dos testes a algoritmos que vimos, alguns são chamados de testes determinı́sticos, ou seja,
detectam com certeza se n é primo ou se n é composto, mas apresentam um defeito computacional:
são algoritmos de tempo exponencial, ou seja, seu tempo de execução cresce exponencialmente
quando o inteiro n a ser testado cresce. Por outro lado, vimos testes que são executáveis em
tempo polinomial, mas não são testes determinı́sticos, ou seja, detectam que um inteiro é primo
com certa margem de erro. Um exemplo que vimos foi o teste de Miller. Note que neste teste há
a possibilidade da saı́da do algoritmo ser ”teste inconclusivo“, e neste caso n tem chance de ser
primo.
Se você pretende escrever um programa para procurar primos grandes, com objetivo final de
implementar o RSA, você não usará testes determinı́sticos exponenciais, pois provavelmente não
estará vivo quando o algoritmo parar. O que se faz é usar testes não-determinı́sticos. No caso
do teste de Miller por exemplo, se o aplicarmos usando várias bases com saı́da inconclusiva, a
probabilidade de n ser primo é muito alta1 .
Podemos estar um pouco frustrados neste momento, visto que um matemático sempre busca
certezas irrefutáveis, e no que se refere aos testes de primalidade a serem implementados com-
putacionalmente, parecemos impotentes. Se n é um inteiro muito grande que queremos saber se
é primo ou não temos duas opções: ou usamos um teste que nos dá certeza, mas que jamais vere-
mos o resultado, por ser um teste de tempo exponencial, ou então usamos outros teste, de tempo
polinomial, mas que não garantem a primalidade de n, mas nos dão apenas uma probabilidade,
ainda que alta.
Mas algo surpreendente aconteceu em agosto de 2002, três indianos publicaram um artigo no
qual expunham um teste de primalidade determinı́stico que é executado em tempo polinomial. Os
indianos eram Agrawal, Kayal e Saxena. Assim como no caso do RSA, o algoritmo teve o nome
baseado nas iniciais de seus criadores: algoritmo AKS. Uma coisa curiosa é que dois deles haviam
terminado o curso de graduação a pouco tempo.
Vamos citar rapidamente o teorema que justifica o funcionamento do algoritmo.
1
No caso do teste de Miller, sendo n é o inteiro a ser testado, se o teste for inconclusivo para n/4 bases entre 1
e n − 1, então n necessariamente é primo. Mas essa quantidade de bases é impraticável para n grande.
118
Comentários Finais Seção 10.5
TEOREMA 10.5.1. Sejam n ≥ 2 e r ≥ 1 inteiros positivos, e seja S = {1, 2, ..., r}. Suponha que
(i) r é um primo que não divide n;
(iii) a desigualdade
2r − 2
√
≥ n2db (r−1)/dc
r
vale para qualquer inteiro positivo d que divide (r − 1)/ν, onde ν é a ordem de n em U (r); e
(iv) a igualdade
(x̂ + b̂)n = x̂n + b̂
No enunciado, (xr − 1) denota o ideal gerado por xr − 1. Um ideal é uma estrutura algébrica
análoga aos subgrupos normais em relação a anéis. Zn [x]/(xr − 1) denota o conjunto quociente do
anel Zn [x] pelo ideal (xr − 1).
Etapa 4: Verifique se
(x̂ + b̂)n = x̂n + b̂ em Zn [x]/(xr − 1),
para cada b ∈ S{1, 2, ..., r}. Se a congruência não for verificada para algum b ∈ S, imprima
composto e pare.
Etapa 5: Se a congruência for verificada para todo b ∈ S, imprima primo e pare.
119
Capı́tulo 10 Criptografia RSA
Para detalhes e demonstrações sobre o AKS, consulte [04]. Para encerrar, vamos deixar claro
qualquer confusão que possa surgir sobre a relação entre AKS e RSA.
O AKS é um algoritmo que verifica se um inteiro n dado é primo ou composto. Portanto, o AKS
auxilia a implementação do RSA, pois este necessita de dois primos grandes como parâmetros.
Alguém poderia pensar: se o AKS detecta primos grandes com facilidade (algoritmo determinı́stico
de tempo polinomial), então podemos usá-lo para quebrar um sistema RSA. Isso não é verdade,
pois o AKS não encontra fatores de n, apenas diz se é primo ou composto. Se temos um sistema
RSA de parâmetros p e q, temos n = pq. Se inserirmos n no algoritmo AKS, ele detectará que n
é composto, pois n = pq, mas nenhuma informação teremos a respeito de quem são os primos p e
q. Portanto deve ficar claro a diferença entre dois problemas:
Para o primeiro problema, vimos vários testes e algoritmos que são eficientes. O melhor deles é
o AKS. Já o segundo parece ser um dos problemas mais difı́ceis na matemática. Como já dissemos,
não são conhecidos algoritmos eficientes (rápidos) para fatorar n se este inteiro for grande. Por
enquanto isso é bom, pois nos garante segurança para continuarmos fazendo transações bancárias
pela internet.
120
Bibliografia
[01] ALFORD, W.R., GRANVILLE, A. and POMERANCE, C. There are infinitely many
Carmichael numbers, Ann. of Math. (2), 139 (1994), no. 3, pg. 703-722.
[02] BRESSOUD, D. M. (1989) Factorization and primality testing, Undergraduate Texts in Math-
ematics, Springer-Verlag, New York.
[03] COUTINHO, S. C., Números inteiros e criptografia RSA, Coleção Matemática e Aplicações,
2a Ed., Rio de Janeiro, IMPA, 2011.
[04] COUTINHO, S. C., Primalidade em Tempo Polinomial: Uma introdução ao Algorı́tmo AKS,
Coleção Iniciação Cientı́fica, Rio de Janeiro, IMPA, 2004.
[06] GARCIA, A., LEQUAIN, Y. Elementos de Álgebra. Projeto Euclides. 5a Ed., Rio de Janeiro,
2008.
[07] MAGRINI, L. A. Sobre Números Perfeitos, Revista do Professor de Matemática, no. 78, 2012,
pg. 16-18.
[08] NERY, C. Revisitando a Aritmética, Revista do Professor de Matemática, no. 80, 2013, pg.
31-33.
[09] RIBENBOIM, P. Existem funções que geram os números primos?, Matemática Universitária,
no. 15, 1993, pg. 1-12.
[10] SAMPAIO, J. C. V., CAETANO, P. A. S. Introdução à teoria dos números: um breve curso.
São Paulo: EDUFSCAR, 2008.
121