Die Herausforderung
Schriebe ein Programm oder eine Funktion , die zwei Eingänge ganze Zahlen erfolgt, i
und j
und gibt ihren größten gemeinsamen Teiler; berechnet mit dem euklidischen Algorithmus (siehe unten).
Eingang
Die Eingabe kann als durch Leerzeichen getrennte Zeichenfolgendarstellung von i
und j
oder als zwei separate Ganzzahlen erfolgen. Sie können davon ausgehen, dass ganze Zahlen kleiner oder gleich 10.000 sind. Sie können auch davon ausgehen, dass die Eingabe-Ganzzahlen keine Primzahlen zueinander sind.
Euklidischer Zusammenbruch
Die größere Zahl zwischen i
und j
wird so oft wie möglich durch die kleinere geteilt. Dann wird der Rest hinzugefügt. Dieser Vorgang wird mit dem Rest und der vorherigen Nummer wiederholt, bis der Rest wird 0
.
Zum Beispiel, wenn die Eingabe war 1599 650
:
1599 = (650 * 2) + 299
650 = (299 * 2) + 52
299 = (52 * 5) + 39
52 = (39 * 1) + 13
39 = (13 * 3) + 0
Die letzte Zahl 13
ist der größte gemeinsame Teiler der beiden Eingabe-Ganzzahlen. Es kann so visualisiert werden:
Ausgabe
Ihre Ausgabe muss die Aufschlüsselung in der obigen Form sein, gefolgt von einem Zeilenumbruch und der GCD. Es kann über jedes Medium ausgegeben werden.
Beispiele
Eingänge
18 27
50 20
447 501
9894 2628
Ausgänge
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
Hinweis: Die Ausgänge müssen nicht wie oben angeordnet sein. Der Abstand dient nur der Übersichtlichkeit. Klammern sind erforderlich.
Bonus
Wenn Ihre Ausgabe wie oben angegeben verteilt ist, können Sie Ihrer Punktzahl einen Bonus von -10% hinzufügen.