O MDC de dois números inteiros é o maior número inteiro que divide ambos sem deixar resto. O algoritmo de Euclides é baseado no princípio de que o MDC não muda se o menor número for subtraído ao maior. Por exemplo, 21 é o MDC de 252 e 105 (252 = 21 × 12; 105 = 21 × 5); já que 252 − 105 = 147, o MDC de 147 e 105 é também 21. Como o maior dos dois números é reduzido, a repetição deste processo irá gerar sucessivamente números menores, até convergir em zero. Nesse momento, o MDC é o outro número inteiro, maior que zero. Ao reverter os passos do algoritmo de Euclides, o MDC pode ser expresso como soma dos dois números originais, cada um multiplicado por um número inteiro positivo ou negativo, por exemplo:
21 = 5 × 105 + (−2) × 252. Esta importante propriedade é denominada identidade de Bézout.
A mais antiga descrição que se conhece do método usado no algoritmo de Euclides é da sua obra Elementos (c. 300 a.C.), o que o torna um dos algoritmos numéricos mais antigos ainda em uso corrente. O algoritmo original foi descrito apenas para números naturais e comprimentos geométricos, mas foi generalizado no século XIX para outras classes de números como os inteiros gaussianos e polinómios de uma variável. Isto conduziu a noções da moderna álgebra abstrata tais como os domínios euclidianos. O algoritmo de Euclides foi ainda generalizado mais a outras estruturas matemáticas, como os nós e polinómios multivariados.
O algoritmo de Euclides é um dos mais antigos algoritmos ainda em uso.[3] Surge na sua obra Os Elementos (c. 300 a.C.), especificamente nos Livros 7 (Proposições 1–2) e 10 (Proposições 2–3). No Livro 7, o algoritmo é formulado para inteiros, enquanto no Livro 10 é formulado para comprimentos de segmentos lineares (dir-se-ia hoje que estaria formulado para números reais). Comprimentos, áreas e volumes, representados como números reais hoje em dia, não são medidos nas mesmas unidades, e não existe uma unidade natural de comprimento, área ou volume. O conceito de número real era desconhecido à época de Euclides. O último algoritmo é geométrico. O MDC de dois comprimentos a e b corresponde ao maior comprimento g que mede propriamente a e b; por outras palavras, os comprimentos a e b são o resultado da multiplicação do comprimento g por números inteiros.
O algoritmo não foi provavelmente concebido por Euclides, que compilou resultados de matemáticos anteriores nos seus Elementos.[4][5] O matemático e historiador Bartel van der Waerden sugere que o Livro VII provém de um texto em teoria dos números escrito por matemáticos da escola de Pitágoras.[6] O algoritmo era provavelmente conhecido por Eudoxo de Cnido (cerca de 375 a.C.).[3][7] Poderá ainda ser anterior a Eudoxo,[8][9] a julgar pelo uso do termo técnico ἀνθυφαίρεσις (anthyphairesis, subtração recíproca) em trabalhos de Euclides e Aristóteles.[10]
Séculos mais tarde, o algoritmo de Euclides terá sido reinventado de forma independente na Índia e China,[11] sobretudo para resolver equações diofantinas que surgiram relacionadas com a Astronomia e a elaboração de calendários precisos. No final do século V, o matemático indiano e astrónomo Aryabhata descreveu o algoritmo como o "pulverizador",[12] por causa da sua eficácia a resolver equações diofantinas.[13] Embora um caso especial do teorema chinês do resto já fora descrito pelo matemático e astrónomo chinês Sun Tzu,[14] a solução geral foi publicada por Ch’in Chiu-Shao na sua obra de 1247 chamada Shushu Jiuzhang (數書九章 Tratado Matemático em Nove Partes).[15] O algoritmo de Euclides foi descrito pela primeira vez na Europa na segunda edição de Problèmes plaisants et délectables (Problemas aprazíveis e deleitáveis, 1624) de Bachet de Méziriac .[12] Na Europa, era usado para resolver equações diofantinas e desenvolvimento de frações contínuas. O algoritmo de Euclides estendido foi publicado pelo matemático inglês Nicholas Saunderson, que o atribuiu a Roger Cotes como método para calcular frações contínuas de forma eficiente.[16]
Descrição do algoritmo
Definição do algoritmo
A ideia principal no Algoritmo de Euclides é que o MDC pode ser calculado recursivamente, usando o resto da divisão como entrada para o próximo passo, o que é baseado na seguinte propriedade do MDC:
onde é o resto da divisão de por .
Isso quer dizer que o resto da divisão em uma chamada do algoritmo será usado como entrada para a próxima chamada.
Sabemos que esse resto é calculado da seguinte forma: , onde é uma divisão inteira.
Desta forma, podemos substituir as variáveis para obter uma sequência: usando , e , temos a seguinte sequência:
que nos diz que para calcular o próximo resto, basta multiplicar o resto atual por e depois subtrair do resto anterior.
Quando o próximo resto for igual a zero, o algoritmo termina a execução e o resto atual () é o máximo divisor comum.
A partir dessas observações, podemos facilmente derivar uma versão completa do algoritmo:
MDC (a, b)
if (b == 0)
return a
else
return MDC(b, a % b)
Desta versão recursiva, é fácil derivar a versão iterativa: é necessário apenas observar que a condição de parada e que na chamada subsequente do algoritmo, o valor de é o valor antigo de e o valor do novo é o valor do resto.
MDC(a, b)
while (b != 0)
r = a % b
a = b
b = r
return a;
Versão original (geométrica)
Na concepção grega da matemática, os números eram entendidos como magnitudes geométricas. Um tema recorrente na geometria grega era o da comensurabilidade de dois segmentos: dois segmentos (números) AB e CD são comensuráveis quando existe um terceiro segmento PQ que cabe exactamente um número inteiro de vezes nos primeiros dois, ou seja, PQ «mede» (mensura: medida) os segmentos AB e CD.
Nem todos os pares de segmentos são comensuráveis, como observaram os pitagóricos quando estabeleceram que não é um número racional, mas no caso de dois segmentos comensuráveis pretende-se determinar a maior medida comum possível.
Euclides descreveu na proposição VII.2 dos seus Elementos um método que permite determinar a maior medida comum de dois números (segmentos) que não sejam primos entre si, embora na época tal método se explicasse em termos geométricos, o que se ilustra na transcrição seguinte:
Para encontrar a máxima medida comum de dois números que não sejam primos entre si.
Sejam AB e CD os dois números que não são primos entre si. É necessário então encontrar a máxima medida comum de AB e CD.
Se CD mede AB então é uma medida comum já que CD se mede a si mesmo. É manifesto que também é a maior medida pois nada maior que CD pode medir CD. Mas se CD não mede AB então algum número restará de AB e CD, o menor sendo continuamente resto do maior e que medirá o número que o precede. Porque uma unidade não ficará pois se assim não for, AB e CD serão primos entre si [Prop. VII.1], o que é contrário ao que se supôs.
Portanto, ficará algum número que medirá o número que o precede. E seja CD a medir BE deixando EA menor que si mesmo e seja EA medindo DF deixando FC menor que si mesmo e seja FC medida de AE. Então, como FC mede AE e AE mede DF, FC será então medida de DF. E também se mede a si mesmo. Portanto também medirá todo o segmento CD. e CD mede BE. Então CF mede BE e também mede EA. Assim mede todo o segmento BA e também mede CD. Isto é, CF mede tanto AB como CD, pelo que é uma medida comum de AB e CD.
Afirmo que também é a maior medida comum possível porque se não o fosse, então um número maior que CF mede os números AB e CD. Seja este G. Dado que G mede CD e CD mede BE, G também mede BE. Além disso, mede todo o segmento BA pelo que mede também o resíduo AE. E AE mede DF pelo que G também mede DF. Mede ainda todo o segmento DC pelo que mede também o resíduo CF, ou seja, o maior mede o menor, o que é impossível.
Portanto, nenhum número maior que CF pode medir os números AB e CD. Então CF é a maior medida comum de AB e CD, o que era o que se queria demonstrar.
Numa linguagem mais moderna, o algoritmo poderia ser descrito da seguinte forma:
Dados dois segmentos AB e CD (com AB>CD), retira-se CD de AB tantas vezes quanto possível. Se não houver resto, então CD é a máxima medida comum.
Se se obtém um resto EF, este é menor que CD e podemos repetir o processo: retira-se EF tantas vezes quanto possível de CD. Se no final não restar nada, EF é a medida comum. No caso contrário obtém-se um novo resíduo GH menor que EF.
O processo repete-se até não haver nenhum resto. O último resto obtido é a maior medida comum.
O facto de os segmentos serem comesuráveis é a chave para assegurar que o processo termina sempre, como se prova de seguida.
Demonstração da terminação e exatidão do algoritmo
A própria definição da série por divisão euclidiana mostra que, para qualquer tal que é não nulo, existe um inteiro tal que :
e ainda A série de inteiros naturais é portanto estritamente decrescente, e atingirá o valor num número finito de passos. A existência de um último resto não nulo está assim estabelecida.
Seja o índice deste último resto não nulo. Para mostrar que é o MDC procurado, note-se que a relação anterior se escreve como o que mostra que divide Tomando deduz-se que divide também também, e por recorrência, note-se que divide todos os termos da série em particular os primeiros termos e é então um divisor comum de e Reciprocamente, todo o divisor comum de a e b dividirá também e de novo por recorrência, dividirá todos os termos da série em particular
é então um divisor comum de a e b que é divisível por todo e qualquer divisor comum: é assim o MDC.
Exemplo
Tomemos os números 348 e 156:
348
156
-312
36 ≠ 0
2
Como o resto não é zero, substituímos o dividendo e o divisor:
156
36
-144
12 ≠ 0
4
Como o resto não é zero, substituímos o dividendo e o divisor:
36
12
-36
0
3
quociente
2
4
3
348
156
36
12
resto
36
12
0
Portanto, o máximo divisor comum dos inteiros 348 e 156 é 12.
↑Thomas L. Heath, The Thirteen Books of Euclid's Elements, 2nd ed. [Facsimile. Original publication: Cambridge University Press, 1925], 1956, Dover Publications
↑Jones A (1994). «Greek mathematics to AD 300». Companion encyclopedia of the history and philosophy of the mathematical sciences. Nova Iorque: Routledge. pp. 46–48. ISBN0-415-09238-8
↑van der Waerden BL (1954). Science Awakening. Col: trad. Arnold Dresden. Groningen: P. Noordhoff Ltd. pp. 114–115
↑von Fritz K (1945). «The Discovery of Incommensurability by Hippasus of Metapontum». Ann. Math. 46: 242–264. doi:10.2307/1969021
↑Heath TL (1949). Mathematics in Aristotle. [S.l.]: Oxford Press. pp. 80–83
↑David Fowler (1987). The Mathematics of Plato's Academy: A New Reconstruction. Oxford: Oxford University Press. pp. 31–66. ISBN0-19-853912-6
↑Becker O (1933). «Eudoxus-Studien I. Eine voreuklidische Proportionslehre und ihre Spuren bei Aristoteles und Euklid». Quellen und Studien zur Geschichte der Mathematik B. 2: 311–333