# Teoria de números/Máximo divisor comum

No capítulo anterior, foi demonstrado o teorema fundamental da aritmética. No entanto, a prova apresentada, utilizou-se de um resultado cuja prova apresentaremos neste capítulo. Para tanto, será preciso definir o conceito de máximo divisor comum entre dois números inteiros.
Este é o conteúdo da próxima seção.

## Divisores comuns
### Definição

Um divisor comum de $a$ e $b$ é um número inteiro que é divisor tanto de $a$ quanto de $b$.

### Exemplos
#### Quem são os divisores comuns de a e b?

O conjunto formado pelos divisores comuns de $a$ e $b$ será denotado por $D(a,b)$.
No primeiro capítulo, mostrou-se que o número $1$ é divisor de qualquer número inteiro. Em particular, se forem escolhidos números $a$ e $b$, certamente $1$ será um divisor comum de ambos.
Logo, o conjunto $D(a,b)$ é não vazio, pois $1\in D(a,b)$.

#### O maior dos divisores comuns

Se $a\neq 0$ e $d$ for um divisor comum de $a$ e de $b$, então $|d|\leq |a|$. Logo o conjunto $D(a,b)$ é limitado superiormente e deve ter um elemento máximo, ou seja, existe um divisor comum de $a$ e $b$ maior que todos os demais. Analogamente, para $b\neq 0$, o conjunto $D(a,b)$ também tem um elemento máximo. O único caso que $D(a,b)$ não é limitado superiormente é o conjunto $D(0,0)$, já que zero é múltiplo de qualquer inteiro não-nulo.
Isso motiva a próxima definição.

### Definição de MDC
#### Definição

O máximo divisor comum (abreviadamente MDC) entre dois números inteiros $a$ e $b$, em que pelo menos um deles não é zero, é o maior elemento do conjunto $D(a,b)$, e será denotado por $mdc(a,b)$, ou simplesmente $(a,b)$.
Quando o conjunto $D(a,b)$ possui apenas um elemento positivo, ou seja, quando $(a,b)=1$, os números $a$ e $b$ são ditos primos entre si, relativamente primos ou simplesmente co-primos.

#### Exemplo

Qual é o máximo divisor comum entre $12$ e $15$?
Considerando que os divisores de $12$ são os elementos do conjunto $D(12)=\{\pm 1,\pm 2,\pm 3,\pm 4,\pm 6,\pm 12\}$ e que os divisores de $15$ formam o conjunto $D(15)=\{\pm 1,\pm 3,\pm 5,\pm 15\}$, tem-se que $D(12,15)=\{\pm 1,\pm 3\}$, cujo maior elemento é $3$. Portanto, $mdc(12,15)=3$.
Embora ainda não tenha sido explicado como encontrar o máximo divisor comum de dois números inteiros (isso será feito mais adiante), mostra-se que ele é um dos elementos do conjunto $\{ax+by:x,y\in \mathbb {Z} \}$. Este resultado é um teorema surpreendente, pois relaciona a estrutura multiplicativa do conjunto dos números inteiros que foi estudada até agora, com sua estrutura aditiva:

## Teorema de Bézout
### Teorema

Se $d=mdc(a,b)$, então existem inteiros $x$ e $y$ tais que $d=ax+by$.
O resultado também é conhecido como identidade de Bézout.
Antes de apresentar qualquer justificativa (construtiva ou puramente algébrica) dessa identidade, serão mostradas suas consequências imediatas mais importantes.

### Corolário
#### Corolário

Se $m|ab$ e $mdc(a,m)=1$ então $m|b$.
Com essa propriedade, devida a Euclides de Alexandria, já é possível demonstrar o teorema que ficou pendente no capítulo anterior:

### Propriedade fundamental dos primos
#### Teorema

Se um número primo divide o produto de dois números inteiros, então ele é divisor de um dos dois.

### Demonstração do teorema de Bézout

Uma observação crucial para a demonstração do teorema de Bézout é que, para quaisquer números inteiros $a,b$, tem-se a igualdade $(a,b)=(a-b,b)$.
De fato, para que tal propriedade se verifique, é suficiente que os conjuntos $D(a,b)$ e $D(a-b,b)$ sejam iguais. Isso é verdade, pois:
* Se um deles está definido, então o outro também está. De fato, para b diferente de zero ambos conjuntos são definidos; para b igual a zero temos que a deve ser diferente de zero, e os dois conjuntos são iguais.
* Se $d\in D(a,b)$, então $d|a$ e $d|b$.
Donde, $d|a-b$.
Assim, $d\in D(a-b,b)$.
* Reciprocamente, se $d\in D(a-b,b)$, então $d|a-b$ e $d|b$. Logo, deve dividir a soma:
    $d|(a-b)+b=a$,
ou seja, $d\in D(a,b)$.
Outra propriedade do máximo divisor comum é a seguinte:
    $(b,a)=(a,b)=(-a,b)=(a,-b)$
Por causa dela, pode ser suposto que $a\geq b\geq 0$, e obter a demonstração:
Como toda prova por indução, a demonstração anterior fornece um algoritmo. No caso, trata-se de um procedimento para o cálculo de $(a,b)$:

### Exemplos numéricos

Usando o procedimento sugerido, pode-se calcular $(30,18)$ facilmente. Acompanhe:
    $(30,18)=(12,18)=(18,12)=(6,12)=(6,6)=(0,6)=(6,0)=6$
No entanto, quando se tem $a$ bem maior que $b$, a igualdade mais utilizada será $(a,b)=(a-b,b)$.
Por exemplo, se $a=100$ e $b=3$ as etapas serão:
    $(100,3)=(97,3)=(94,3)=\ldots =(4,3)=(1,3)$ $=(3,1)=(2,1)=(1,1)=(0,1)=(1,0)=1$
Neste caso, parece razoável subtrair $3$ de $100$ tantas vezes quanto for possível, em uma única etapa:
    $(100,3)=(100-3\cdot 33,3)=(1,3)=1$
Em geral, será buscado um valor $q$ tal que $0\leq a-bq<b$, pois assim a igualdade $(a,b)=(a-bq,b)$ (que é sempre verdadeira, para qualquer valor inteiro de $q$) reduz o cálculo de $(a,b)$ a um caso bem mais simples.
A existência de um número $q$, satisfazendo ambas as desigualdades é garantida pelo algoritmo da divisão apresentado em um capítulo anterior. Se precisar relembrar os detalhes, consulte a seção "Algoritmo da divisão (de Euclides)".
De posse deste algoritmo, pode-se fazer uma melhoria no algoritmo sugerido anteriormente para o cálculo do MDC.

## Algoritmo de Euclides para o MDC

* Este módulo tem a seguinte tarefa pendente: Adicionar informações históricas sobre o algoritmo e também uma referência às aplicações atuais em música, descrita nos artigos do Brun, e do Toussaint.
* Consulte a Bibliografia

### Teorema

Dados $a,b\in \mathbb {Z}$, com $a\geq b\geq 0$, verifique se $b=0$. Em caso afirmativo, o máximo divisor comum é o próprio $a$. Caso contrário, repita o processo usando $b$ e o resto da divisão de $a$ por $b$. Simbolicamente: Dados de entrada Os inteiros $a$ e $b$.
Saída $(a,b)$.
Procedimento * Se $a<b$, então $(a,b)=(b,a)$; * Se $b=0$, então $(a,b)=a$; * Senão $(a,b)=(a-bq,b)$, onde $0\leq a-bq<b$
Observe que esta é simplesmente uma generalização do algoritmo apresentado logo após a demonstração do teorema de Bézout.
É preciso verificar que o algoritmo irá parar, e ainda mais importante, que fornecerá a resposta correta.
Considere $r_{0}=a$ e $r_{1}=b$, e a seguinte sequência de igualdades (obtidas pelo algoritmo da divisão):
    $r_{0}=$$r_{1}q_{0}+r_{2}$$0\leq r_{2}<r_{1}$ $r_{1}=$$r_{2}q_{1}+r_{3}$$0\leq r_{3}<r_{2}$ $\vdots$ $r_{k-2}=$$r_{k-1}q_{k-2}+r_{k}$$0\leq r_{k}<r_{k-1}$ $r_{k-1}=$$r_{k}q_{k-1}+r_{k+1}$$0\leq r_{k+1}<r_{k}$ $\vdots$
Juntando as desigualdades anteriores, tem-se uma sequência decrescente de números não negativos:
    $r_{1}>r_{2}>r_{3}>\ldots >r_{k}>\ldots \geq 0$
No entanto, só existe uma quantidade finita de números positivos menores que $r_{1}$. Logo, depois de algum resto $r_{k}$, tem-se $r_{k+1}=0$, ou seja:
    $r_{1}>r_{2}>r_{3}>\ldots >\mathbf {r_{k}} >r_{k+1}=0$
É nesse ponto que o algoritmo para: quando o resto $r_{k+1}=0$. Segundo o enunciado, o resultado fornecido será então $r_{k}$.
Será que este é realmente o valor de $(a,b)$?
A resposta é sim, pois $(a,b)=(a-b,b)=(a-2b,b)=(a-3b,b)=\ldots =(a-bq,b)$.
Logo, obtem-se sucessivamente:
    $(a,b)=(r_{0},r_{1})=(r_{1},r_{2})=\ldots =(\mathbf {r_{k}} ,r_{k+1})=(\mathbf {r_{k}} ,0)=\mathbf {r_{k}}$
Portanto o valor fornecido pelo algoritmo corresponde a $(a,b)$, e foi obtido através de exatamente $k$ divisões.

### Exemplo numérico

Quanto é $(30,18)$?
Aplicando o processo usado na demonstração do algoritmo de Euclides para o MDC, tem-se:
    $30=18\cdot 1+12$
    $18=12\cdot 1+\mathbf {6}$
    $12=\mathbf {6} \cdot 2+0$
Logo, $(30,18)=6$.
Para que não seja preciso explicitar cada uma das igualdades, pode-se dispor as informações de cada etapa em uma tabela como a seguinte:
    quociente 112 30 18 12 6 Resto 12 6 0
É importante notar que, embora os quocientes apareçam indicados, o interesse está no valor dos restos.
Para obter automaticamente todas as etapas da aplicação do algoritmo de Euclides a outros pares de números inteiros, pode-se utilizar este recurso on-line, desenvolvido em javascript.

### Interpretação matricial

Na demonstração de que o algoritmo de Euclides funciona, aparecem várias igualdades da forma:
    $r_{j-1}=r_{j}q_{j-1}+r_{j+1}$
O índice $j$ indica que esta é a $j$-ésima divisão efetuada no algoritmo.
Cada uma dessas equações é uma equação de diferenças de segunda ordem, em que cada termo é descrito em função de dois anteriores. No caso, cada resto depende dos próximos dois restos, e reciprocamente, cada resto depende dos dois anteriores.
Tal relação de recorrência pode também ser expressa como:
    ${\begin{bmatrix}r_{j-1}\\r_{j}\end{bmatrix}}={\begin{bmatrix}q_{j-1}&1\\1&0\end{bmatrix}}\cdot {\begin{bmatrix}r_{j}\\r_{j+1}\end{bmatrix}}$, sempre que $1\leq j\leq k$
Com essa notação, os cálculos que aparecem no algoritmo de Euclides para o MDC tornam-se mais sucintos. Por exemplo:
    ${\begin{bmatrix}r_{0}\\r_{1}\end{bmatrix}}$ $={\begin{bmatrix}q_{0}&1\\1&0\end{bmatrix}}\cdot {\begin{bmatrix}r_{1}\\r_{2}\end{bmatrix}}$ $={\begin{bmatrix}q_{0}&1\\1&0\end{bmatrix}}\cdot \overbrace {{\begin{bmatrix}q_{1}&1\\1&0\end{bmatrix}}\cdot {\begin{bmatrix}r_{2}\\r_{3}\end{bmatrix}}}$ $={\begin{bmatrix}q_{0}&1\\1&0\end{bmatrix}}\cdot {\begin{bmatrix}q_{1}&1\\1&0\end{bmatrix}}\cdot \overbrace {{\begin{bmatrix}q_{2}&1\\1&0\end{bmatrix}}\cdot {\begin{bmatrix}r_{3}\\r_{4}\end{bmatrix}}}$
Para facilitar ainda mais a escrita, pode-se adotar a seguinte convenção:
    $Q_{j}={\begin{bmatrix}q_{j}&1\\1&0\end{bmatrix}}$
Se o cálculo anterior for efetuado para todas as etapas do algoritmo, o resultado final será:
    ${\begin{bmatrix}r_{0}\\r_{1}\end{bmatrix}}=Q_{0}\cdot Q_{1}\cdot \ldots \cdot Q_{k-1}\cdot {\begin{bmatrix}d\\0\end{bmatrix}}=M\cdot {\begin{bmatrix}d\\0\end{bmatrix}}$, sendo que $d=(a,b)$.
Perceba que assim não há uma confusão tão grande com os índices dos sucessivos quocientes e restos.
Como a matriz $M$ é um produto de matrizes com entradas inteiras e não-negativas, nenhuma de suas entradas deverá ser negativa. Assim, é possível escrever $M$ da seguinte forma:
    $M={\begin{bmatrix}a'&u\\b'&v\end{bmatrix}}$, com $a',b',u,v\in \mathbb {N}$
Disso se conclui que
    ${\begin{bmatrix}r_{0}\\r_{1}\end{bmatrix}}={\begin{bmatrix}a\\b\end{bmatrix}}={\begin{bmatrix}a'&u\\b'&v\end{bmatrix}}\cdot {\begin{bmatrix}d\\0\end{bmatrix}}={\begin{bmatrix}a'd\\b'd\end{bmatrix}}$
Escrevendo $\Delta =det(M)=a'v-b'u$, tem-se
    $\Delta =det(Q_{0}\cdot Q_{1}\cdot \ldots \cdot Q_{k-1})=det(Q_{0})\cdot det(Q_{1})\cdot \ldots \cdot det(Q_{k-1})=(-1)^{k}$, pois cada matriz $Q_{i}$ tem determinante igual a $-1$.
Logo, a matriz $M$ é invertível e $M^{-1}={\frac {1}{\Delta }}{\begin{bmatrix}v&-u\\-b'&a'\end{bmatrix}}=\Delta {\begin{bmatrix}v&-u\\-b'&a'\end{bmatrix}}$. Esta última igualdade se justifica pois $\Delta =\Delta ^{-1}$.
Dessas considerações, resulta que:
    ${\begin{bmatrix}d\\0\end{bmatrix}}=M^{-1}{\begin{bmatrix}a\\b\end{bmatrix}}=\Delta {\begin{bmatrix}v&-u\\-b'&a'\end{bmatrix}}\cdot {\begin{bmatrix}a\\b\end{bmatrix}}$
Fazendo o produto, e igualando cada componente, conclui-se que:
$\left\{{\begin{matrix}d&=&a(\Delta v)+b(-\Delta u)\\0&=&\Delta (-b'a+a'b)\\\end{matrix}}\right.$
A primeira destas equações corresponde ao teorema de Bézout, com $x=\Delta v$ e $y=-\Delta u$. Já a segunda, implica em $b'a=a'b$. Esse valor coincide com o conhecido mínimo múltiplo comum entre $a$ e $b$, definido a seguir:

#### Definição

O mínimo múltiplo comum dos inteiros $a$ e $b$, $mmc(a,b)$, é o menor elemento positivo do conjunto $M(a,b)=\{x\in \mathbb {Z} :a,b|x\}$
Segundo o comentário que precede esta definição, tem-se:
    $mmc(a,b)={\frac {ab}{(a,b)}}$

#### Exemplificando

Anteriormente foi visto que:
    $30=18\cdot \mathbf {1} +12$
    $18=12\cdot \mathbf {1} +6$
    $12=6\cdot \mathbf {2} +0$
Utilizando esses valores, segue que:
    ${\begin{bmatrix}30\\18\end{bmatrix}}=\overbrace {{\begin{bmatrix}\mathbf {1} &1\\1&0\end{bmatrix}}\cdot {\begin{bmatrix}\mathbf {1} &1\\1&0\end{bmatrix}}\cdot {\begin{bmatrix}\mathbf {2} &1\\1&0\end{bmatrix}}} \cdot {\begin{bmatrix}6\\0\end{bmatrix}}={\begin{bmatrix}5&2\\3&1\end{bmatrix}}\cdot {\begin{bmatrix}6\\0\end{bmatrix}}$.
Para este exemplo, a matriz inversa é
    $M^{-1}=(-1)^{3}{\begin{bmatrix}1&-2\\-3&5\end{bmatrix}}={\begin{bmatrix}-1&2\\3&-5\end{bmatrix}}$
Logo,
    ${\begin{bmatrix}6\\0\end{bmatrix}}={\begin{bmatrix}-1&2\\3&-5\end{bmatrix}}\cdot {\begin{bmatrix}30\\18\end{bmatrix}}={\begin{bmatrix}-1\cdot 30&2\cdot 18\\3\cdot 30&-5\cdot 18\end{bmatrix}}$, ou seja
* $(30,18)=6=30\cdot (-1)+18\cdot 2$
* $mmc(30,18)=3\cdot 30=-5\cdot 18=90$
Note que, quando $a,b$ são positivos, a expressão $d=a(\Delta v)+b(-\Delta u)=ax+by$ deve ter exatamente um dos valores $x,y$ menor que zero, para que a combinação linear de $a,b$ não seja maior que qualquer um deles.
Considere uma outra situação: como encontrar o mínimo múltiplo comum entre $7$ e $5$?
Primeiramente, pelo algoritmo de Euclides tem-se:
    $7=5.1+2$
    $5=2.2+1$
    $2=1.2+0$
Logo $mdc(7,5)=1.$
Daí tem-se que $\textstyle mmc(7,5)={\frac {7\times 5}{1}}=35.$

## Uma demonstração alternativa do teorema de Bézout

Agora será apresentada uma prova não construtiva do teorema de Bézout. Isso significa que, embora a mesma assegure a validade do teorema, ela não fornece um método para a obtenção do MDC (ao contrário do que foi feito anteriormente).
Além disso, são utilizados alguns conceitos que certamente são conhecidos por aqueles que possuem conhecimentos básicos de álgebra. Se este não for o seu caso, você poderá pular esta seção, e não haverá prejuizo na leitura do restante deste livro.

## Exercícios

* O algoritmo da divisão estabelece que dados os inteiros $a,b$, existem inteiros $q,r$ tais que $a=bq+r$, com $0\leq r<b$. Utilize uma calculadora comum (e apenas as quatro operações elementares) para obter os valores de $q,r$ correspondentes a alguns pares de inteiros $a,b$.
* Dados a e b, determine o valor de mdc(a,b) e números inteiros x, y tais que d = xa + yb, para os seguintes valores de a e b:
** a = 299 e b = 161
** a = 435 e b = 232
** a = 101 e b = 33
** a = 145 e b = 48

## Ver também
### Wikipedia

* Máximo divisor comum