Wyzwanie
Napisać program lub funkcję, która pobiera dwie liczby całkowite wejściowe, i
a j
, i wysyła ich największy wspólny dzielnik; obliczone przy użyciu algorytmu euklidesowego (patrz poniżej).
Wkład
Dane wejściowe można traktować jako ciąg znaków rozdzielany spacjami i
i j
lub jako dwie oddzielne liczby całkowite. Możesz założyć, że liczby całkowite będą mniejsze lub równe 10 000. Możesz także założyć, że wejściowe liczby całkowite nie będą względem siebie pierwszymi.
Podział euklidesowy
Im większa liczba z przedziału i
i j
jest podzielony przez mniejszą tyle razy, ile to możliwe. Następnie dodaje się resztę. Ten proces powtarza się z resztą i poprzednim numerem, aż reszta stanie się 0
.
Na przykład, jeśli dane wejściowe to 1599 650
:
1599 = (650 * 2) + 299
650 = (299 * 2) + 52
299 = (52 * 5) + 39
52 = (39 * 1) + 13
39 = (13 * 3) + 0
Ostateczna liczba 13
to największy wspólny dzielnik dwóch liczb całkowitych wejściowych. Można to wizualizować w następujący sposób:
Wydajność
Twój wynik musi być zestawieniem w powyższym formularzu, po którym następuje nowa linia i GCD. Może być wyprowadzany przez dowolny nośnik.
Przykłady
Wejścia
18 27
50 20
447 501
9894 2628
Wyjścia
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
Uwaga: Wyjścia nie muszą być rozmieszczane tak, jak są powyżej. Odstępy służą jedynie przejrzystości. Wymagane są nawiasy.
Premia
Jeśli twój wynik jest podzielony jak wyżej, możesz dodać -10% premii do swojego wyniku.