Conteúdos da cadeira

Inteiros e congruências

Divisão, mdc e Euclides, primos, aritmética modular e dígitos de controlo.

Markdown

Perguntar sobre esta página

ChatGPTClaudePerplexityGeminiCopiar e abrir

Envia o link e pede à IA para ler a página. No Gemini, cola a pergunta copiada.

Ver pergunta para copiar
Nesta página

A teoria dos números estuda os inteiros com as operações de sempre, mas com perguntas novas: quem divide quem, que restos são possíveis, como resolver equações só com restos. É a base da criptografia moderna (o RSA vive de aritmética modular) e dos dígitos de verificação do NIF e do NIB. Para acompanhar esta página basta a aritmética do secundário; o resto constrói-se aqui.

O algoritmo da divisão e a divisibilidade

Teorema da divisão: dados a,bZa, b \in \mathbb{Z} com b0b \ne 0, existem inteiros únicos qq (quociente) e rr (resto) com a=qb+ra = qb + r e 0r<b0 \le r < |b|.

A condição 0r<b0 \le r < |b| é o que torna o par único. Exemplo: 19=44+319 = 4 \cdot 4 + 3 (resto 3) e 19=(5)4+1-19 = (-5) \cdot 4 + 1 (resto 1, não 3-3). Com divisores negativos funciona igual: 19=(4)(4)+319 = (-4) \cdot (-4) + 3. Se programares, atenção: algumas linguagens devolvem resto negativo para dividendos negativos, o que viola esta convenção matemática.

Diz-se que bb divide aa, bab \mid a, quando existe qq com a=qba = qb, isto é, quando o resto é zero. Exemplos: 3123 \mid 12, 420-4 \mid 20, e n0n \mid 0 para todo o n0n \ne 0. Não confundas bab \mid a (relação, verdadeira ou falsa) com a/ba/b (número).

Representação em bases

Um número escreve-se numa base bb como soma de potências: 2159=2103+1102+510+92159 = 2 \cdot 10^3 + 1 \cdot 10^2 + 5 \cdot 10 + 9. Para converter por divisões sucessivas, divide-se por bb e lêem-se os restos de trás para a frente. Exemplo próprio: 4343 em binário.

43=212+143 = 21 \cdot 2 + 1; 21=102+121 = 10 \cdot 2 + 1; 10=52+010 = 5 \cdot 2 + 0; 5=22+15 = 2 \cdot 2 + 1; 2=12+02 = 1 \cdot 2 + 0; 1=02+11 = 0 \cdot 2 + 1. Restos de trás para a frente: 1010112101011_2. Confirma: 32+8+2+1=4332 + 8 + 2 + 1 = 43. Para hexadecimal, agrupa de quatro em quatro bits: 102=210_2 = 2, 10112=11=B1011_2 = 11 = B, logo 43=2B1643 = 2B_{16}. Confirma: 216+11=432 \cdot 16 + 11 = 43.

Máximo divisor comum e Euclides

O máximo divisor comum mdc(a,b)mdc(a, b) é o maior inteiro que divide ambos. O algoritmo de Euclides calcula-o com divisões sucessivas: substitui o par pelo (divisor, resto) até o resto ser zero. O último divisor não nulo é o mdc.

Exemplo: mdc(1071,462)mdc(1071, 462).

  1. 1071=2462+1471071 = 2 \cdot 462 + 147.
  2. 462=3147+21462 = 3 \cdot 147 + 21.
  3. 147=721+0147 = 7 \cdot 21 + 0.

O mdc é 2121. Confirma: 2151=107121 \cdot 51 = 1071 e 2122=46221 \cdot 22 = 462. E 5151 e 2222 não têm divisores comuns além de 1, por isso não há maior.

Por trás disto está a identidade de Bézout: existem inteiros s,ts, t com sa+tb=mdc(a,b)sa + tb = mdc(a, b). Para o exemplo, desfazendo as divisões: 21=4623147=4623(10712462)=74623107121 = 462 - 3 \cdot 147 = 462 - 3 \cdot (1071 - 2 \cdot 462) = 7 \cdot 462 - 3 \cdot 1071. Confirma: 7462=32347 \cdot 462 = 3234, 31071=32133 \cdot 1071 = 3213, diferença 2121. Esta identidade é o que permite inverter números módulo nn, como vais ver.

Podes experimentar o algoritmo com outros valores:

Python
def mdc(a, b):
    while b:
        a, b = b, a % b
    return a

print(mdc(1071, 462))  # 21
print(mdc(100, 35))    # 5
Dados de entrada

Primos e fatorização

Um inteiro p>1p > 1 é primo quando os seus únicos divisores positivos são 11 e pp. Os primeiros são 2,3,5,7,11,132, 3, 5, 7, 11, 13. O Teorema Fundamental da Aritmética diz que todo o inteiro maior que 1 se escreve como produto de primos de forma única (a menos da ordem): 60=223560 = 2^2 \cdot 3 \cdot 5.

Duas consequências úteis: mdc(a,b)=1mdc(a, b) = 1 significa que aa e bb são primos entre si (não partilham fatores), e se um primo pp divide um produto abab, então pp divide aa ou pp divide bb (lema de Euclides). É este lema que faz a fatorização ser única.

Congruências: igualdade a menos do resto

Definição: fixa n>1n > 1. Diz-se que aa é congruente com bb módulo nn, ab(modn)a \equiv b \pmod{n}, quando n(ab)n \mid (a - b), isto é, quando aa e bb têm o mesmo resto na divisão por nn.

Exemplos: 173(mod7)17 \equiv 3 \pmod{7} porque 173=1417 - 3 = 14 é múltiplo de 7; 213(mod3)-2 \equiv 13 \pmod{3} porque 213=15-2 - 13 = -15 é múltiplo de 3. A intuição da “aritmética do relógio”: módulo 12, 1717 horas são 55 horas, e 8+6=148 + 6 = 14 horas são 22 horas.

A congruência módulo nn é uma relação de equivalência: reflexiva, simétrica e transitiva. As suas classes, as classes de congruência, são os nn conjuntos dos inteiros com cada resto possível. Módulo 5, a classe de 22 é {,8,3,2,7,12,}\{\dots, -8, -3, 2, 7, 12, \dots\}.

O essencial para calcular: podes somar, subtrair e multiplicar congruências como igualdades. Se aba \equiv b e cd(modn)c \equiv d \pmod{n}, então a+cb+da + c \equiv b + d e acbd(modn)ac \equiv bd \pmod{n}. Para potências grandes, reduz a base primeiro: 73(mod5)7^{3} \pmod{5} calcula-se como 23=83(mod5)2^3 = 8 \equiv 3 \pmod{5}, porque 72(mod5)7 \equiv 2 \pmod{5}.

Resolver congruências lineares

Resolver axb(modn)ax \equiv b \pmod{n} é a operação central. O procedimento:

  1. Calcula d=mdc(a,n)d = mdc(a, n). Se dbd \nmid b, não há solução.
  2. Se dbd \mid b, divide tudo por dd: axb(modn)a'x \equiv b' \pmod{n'}, agora com aa' e nn' primos entre si.
  3. Inverte aa' módulo nn' com Euclides estendido (Bézout dá sa+tn=1sa' + tn' = 1, logo ss é o inverso). A solução é xsb(modn)x \equiv s b' \pmod{n'}.
  4. As soluções módulo nn original são dd valores espaçados de nn'.

Exemplo 1: 3x2(mod5)3x \equiv 2 \pmod{5}. mdc(3,5)=1mdc(3, 5) = 1. O inverso de 3 módulo 5 é 2, porque 32=613 \cdot 2 = 6 \equiv 1. Logo x22=4(mod5)x \equiv 2 \cdot 2 = 4 \pmod{5}. Confirma: 34=122(mod5)3 \cdot 4 = 12 \equiv 2 \pmod{5}.

Exemplo 2: 6x4(mod10)6x \equiv 4 \pmod{10}. mdc(6,10)=2mdc(6, 10) = 2, e 242 \mid 4, por isso há solução. Divide por 2: 3x2(mod5)3x \equiv 2 \pmod{5}, que dá x4(mod5)x \equiv 4 \pmod{5}. As soluções módulo 10 são x4x \equiv 4 e x9x \equiv 9 (soma-se n=5n' = 5). Confirma ambas: 64=2446 \cdot 4 = 24 \equiv 4 e 69=544(mod10)6 \cdot 9 = 54 \equiv 4 \pmod{10}.

Aplicação: dígitos de verificação

O NIF português tem 9 dígitos a1a9a_1 \dots a_9 com pesos 99 a 11, e é válido quando 9a1+8a2+7a3+6a4+5a5+4a6+3a7+2a8+a90(mod11)9a_1 + 8a_2 + 7a_3 + 6a_4 + 5a_5 + 4a_6 + 3a_7 + 2a_8 + a_9 \equiv 0 \pmod{11}. Testa a sequência 1234567891\,2\,3\,4\,5\,6\,7\,8\,9:

91+82+73+64+55+46+37+28+9=9+16+21+24+25+24+21+16+9=1659\cdot1 + 8\cdot2 + 7\cdot3 + 6\cdot4 + 5\cdot5 + 4\cdot6 + 3\cdot7 + 2\cdot8 + 9 = 9 + 16 + 21 + 24 + 25 + 24 + 21 + 16 + 9 = 165.

Como 165=1511165 = 15 \cdot 11, o resto módulo 11 é 0: a sequência passa na verificação. (É só um exemplo aritmético, não um NIF real.) O NIB usa a mesma ideia com módulo 97 sobre 21 dígitos. Estes esquemas detetam erros de digitação porque trocar um dígito muda a soma ponderada de forma que o resto quase sempre deixa de ser o exigido.

Para levar para a próxima página

O algoritmo de Euclides e a aritmética modular são os teus primeiros algoritmos com prova de correção séria. A técnica para os provar, a indução, é o tema seguinte.

Ver o ficheiro no GitHub

À tua maneira

Escolhe como preferes ler.

Aparência
Ajustar cores e largura
Cor de destaque do tema FEUP
Tipo de letra

Álgebra, lógica e uma ideia de cada vez.

As tuas escolhas ficam guardadas neste navegador.

Pesquisar

Escreve para pesquisar em todo o site.

para escolher · Enter para abrir · Esc para fechar

Atalhos de teclado

Clica numa tecla para a mudar. Esc cancela. Backspace desativa.

PesquisarCtrl / Cmd K

Os atalhos não interferem enquanto escreves. Tab e Enter funcionam sempre.