Соревнование
Напишите программу или функцию, которая принимает два входных целых числа i
и j
выводит их наибольший общий делитель; рассчитывается с использованием евклидова алгоритма (см. ниже).
вход
Входные данные могут быть приняты в качестве пространства , разделенных строковым представлением i
и j
или в виде двух отдельных целых чисел. Вы можете предположить, что целые числа будут меньше или равны 10000. Вы также можете предположить, что входные целые числа не будут взаимно простыми.
Евклидово расстройство
Большее число между i
и j
делится на меньшее как можно больше раз. Затем остаток добавляется. Этот процесс повторяется с остатком и предыдущим номером, пока остаток не станет 0
.
Например, если вход был 1599 650
:
1599 = (650 * 2) + 299
650 = (299 * 2) + 52
299 = (52 * 5) + 39
52 = (39 * 1) + 13
39 = (13 * 3) + 0
Последнее число 13
является наибольшим общим делителем двух входных целых чисел. Это можно представить так:
Выход
Ваш вывод должен быть разбит на форму выше, за которой следует перевод строки и GCD. Он может быть выведен через любой носитель.
Примеры
входные
18 27
50 20
447 501
9894 2628
Выходы
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
Примечание. Выходы не обязательно должны располагаться так, как указано выше. Интервал только для ясности. Скобки обязательны.
бонус
Если ваш вывод находится в интервале, как указано выше, вы можете добавить бонус -10% к вашему счету.