O desafio
Escreva um programa ou função que use dois números inteiros de entrada, i
e j
, e emita seu maior divisor comum; calculado usando o algoritmo euclidiano (veja abaixo).
Entrada
A entrada pode ser tomada como uma representação de string delimitada por espaço i
e / j
ou como dois números inteiros separados. Você pode assumir que números inteiros serão menores ou iguais a 10.000. Você também pode assumir que os números inteiros de entrada não serão primos um do outro.
Repartição Euclidiana
O número maior entre i
e j
é dividido pelo menor tantas vezes quanto possível. Em seguida, o restante é adicionado. Esse processo é repetido com o restante e o número anterior, até que o restante se torne 0
.
Por exemplo, se a entrada foi 1599 650
:
1599 = (650 * 2) + 299
650 = (299 * 2) + 52
299 = (52 * 5) + 39
52 = (39 * 1) + 13
39 = (13 * 3) + 0
O número final,, 13
é o maior divisor comum dos dois números inteiros de entrada. Pode ser visualizado assim:
Saída
Sua saída deve ser o detalhamento no formulário acima, seguido por uma nova linha e o GCD. Pode ser produzido através de qualquer meio.
Exemplos
Entradas
18 27
50 20
447 501
9894 2628
Saídas
27 = (18 * 1) + 9
18 = (9 * 2) + 0
9
50 = (20 * 2) + 10
20 = (10 * 2) + 0
10
501 = (447 * 1) + 54
447 = (54 * 8) + 15
54 = (15 * 3) + 9
15 = (9 * 1) + 6
9 = (6 * 1) + 3
6 = (3 * 2) + 0
3
9894 = (2628 * 3) + 2010
2628 = (2010 * 1) + 618
2010 = (618 * 3) + 156
618 = (156 * 3) + 150
156 = (150 * 1) + 6
150 = (6 * 25) + 0
6
Nota: As saídas não precisam ser espaçadas, pois estão acima. O espaçamento é apenas para maior clareza. Parênteses são obrigatórios.
Bônus
Se sua saída estiver espaçada como acima, você poderá adicionar um bônus de -10% à sua pontuação.