的查詢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).
上述程序有什麼問題?
感謝您的幫助!
我認爲你需要使用[clpfd](http://www.swi-prolog.org/man/clpfd。html)而不是原始算術,因爲在給出這些限制的情況下,Prolog不夠聰明以至於猜測範圍內的數字。 –