我正在研究一个谓词,它将计算给定数字的除数数量。它不会计算所有这些,但足以让我知道它有两个以上的因素。这是我所拥有的:
countFactors([_,_,_,_X]):-!.
countFactors(Product, Count,Divisor, _X):-
Divisor =< Product/2,
Product mod Divisor = 0,
NewC is Count + 1,
NextD is Divisor + 1,
countFactors(Product,NewC, NextD, NewC).
但是,运行 countFactors(16,0,2,X)。简单地返回 false,而我希望它返回 X = 2
编辑:好的,所以现在我意识到为什么它返回错误:如果所讨论的除数是一个因素,它工作正常,并且递归。但是,如果它不是一个因子,那么它给出 false,但不会递增到下一个除数,它只是停止并返回 false。
所以我的问题是,我该如何纠正这个问题?