Ich versuche, die Summe aller positiven Vielfachen von 3 und 5 unter 1000 zu finden. Nach dem Hinzufügen des Teils, der die Vielfachen von 3 aus der Summe der Vielfachen von 5 entfernen soll, spuckt gprolog weiterhin "Nein" für die Abfrage aus ?- sigma(1000,N).
Das Problem liegt offenbar in Sigma5, aber ich kann es nicht genau erkennen:
sigma(Num, Result) :- sigma3(Num, 3, Result3),
sigma5(Num, 5, Result5),
Result is Result3 + Result5.
sigma3(Num, A, Result) :- A < Num,
Ax is A+3,
sigma3(Num, Ax, ResultX),
Result is ResultX + A.
sigma3(Num, A, Result) :- A >= Num,
Result is 0.
sigma5(Num, A, Result) :- A < Num,
mod3 is A mod 3,
0 \= mod3,
Ax is A+5,
sigma5(Num, Ax, ResultX),
Result is ResultX + A.
sigma5(Num, A, Result) :- A < Num,
mod3 is A mod 3,
0 == mod3,
Ax is A+5,
sigma5(Num, Ax, ResultX),
Result is ResultX.
sigma5(Num, A, Result) :- A >= Num,
Result is 0.
Was ist das Problem mit meinem Code?