我一直试图通过解决项目欧拉来学习Prolog。为了解决问题#1,我想出了以下内容。
divides(X,Y) :- Y mod X =:= 0.
sumlist([],0).
sumlist([H|T],X) :-
sumlist(T,Y), X is Y + H.
mult_3_or_5(X) :- between(1,999,X),
(divides(3,X); divides(5,X)).
find_sum(Z) :- findall(X,mult_3_or_5(X),Y),
sumlist(Y,Z).
这个问题在于它计算可被3和5两次整除的数字。我当然对Prolog如何运作有误解,我相信我需要使用cut运算符或类似的东西。我很欣赏对正在发生的事情的一个很好的解释。