ggT mit Prolog

Kiloui

Neuling
Thread Starter
Mitglied seit
25.04.2010
Beiträge
2
Hey,

ich hab hier folgende mögliche Lösung um den ggT mittels Prolog zu bestimmen:

ggt(A, B, C) :-gt(A, B, C), not(larger_gt(A, B, C)).

larger_gt(A, B, C) :-gt(A, B, C1), C1>C.

gt(A, B, C) :-t(A, C), t(B, C).

t( A, C ) : - zwischen(1, C, A), AmodC =:= 0.

zwischen(C, C, O).
zwischen(U, C, O) :-O>U, U1 isU+1, zwischen(U1, C, O).


kann mir jmd die letzten beiden Zeilen erklären !? Was bewirkt "zwischen(C, C, O)."
Und wieso läßt man in der untersten Zeile das U gegen O laufen ?
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
1 ggt(A, B, C) :-gt(A, B, C), not(larger_gt(A, B, C)).

2 larger_gt(A, B, C) :-gt(A, B, C1), C1>C.

3 gt(A, B, C) :-t(A, C), t(B, C).

4 t( A, C ) : - zwischen(1, C, A), AmodC =:= 0.

5 zwischen(C, C, O).
6 zwischen(U, C, O) :-O>U, U1 isU+1, zwischen(U1, C, O).

Bis einschließlich Zeile 4 sollte die Sache eindeutig sein. Zeile 5 und 6 bilden eine Schleife. Zeile 6 zählt von 1 hoch und Zeile 5 ist die Abbruchbedingung (Zähler =A bzw B). Zeile 4 berechnet dann für jeden Schleifendurchlauf ob die gefundenen Zahlen ganzzahlig teilbar sind. Das ganze konstrukt liefert dann an Zeile 3 alle gemeinsamen Teiler und Zeile 2 filtert alle zu kleinen Teiler raus weil wir ja den größten gemeinsamen Teiler suchen.

Ist doch einfach oder :d
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh