一个查询sum(X,Y)
将回答 X 的所有正除数的总和(不包括 X 本身)说,sum(12,Y)
将回答Y=16
因为 1、2、3、4、6 是 12 的除数。
我打算实现以下 prolog 程序,但它失败了,说一些变量没有实例化。
sum(X,Y) :- f(X,Y,1).
f(X,Y,F) :- X>Y,X>F, 0 is X mod F, F1 is F+1, f(X,Y1,F1), Y is F+Y1.
f(X,Y,F) :- X>Y,X>F, not(0 is X mod F), F1 is F+1, f(X,Y,F1).
上述程序有什么问题?
谢谢你的帮助!