Я пытаюсь найти сумму всех положительных кратных 3 и 5 ниже 1000. После добавления части, которая должна удалить кратные 3 из суммы кратных 5 , gprolog будет держать выплевывая «нет» для запроса ?- sigma(1000,N).
Начинающий - добавьте кратные 3 и 5
проблема, видимо, лежит в sigma5, но я не могу достаточно определить его:
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.
в чем проблема с моим кодом?
+1: Возможно, еще одно замечание: 'library (clpfd)' в SWI и YAP компилируется выше программы, так что традиционные (is)/2-режимы сопоставимы с наивными (is)/2! – false