クエリsum(X,Y)
は、X のすべての正の約数 (X 自体を除く) の合計を返します。たとえば、1、2、3、4、6 は 12 の約数であるため、sum(12,Y)
答えます。Y=16
次のプロローグ プログラムを実装しようとしましたが、一部の変数がインスタンス化されていないと言って失敗しました。
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).
上記のプログラムの問題は何ですか?
あなたの助けに感謝します!