我正在学习逻辑测试,我看到了一个完美数字问题的例子 有很多解决方案,但有一个我不确定他们是如何做到的。
divisors(Number, D, L1, L2) :-
X is Number / D,
( D < X -> D1 is D + 1, divsors(Number, D1, L1, L2) ; L1 = L2).
divisors(Number, D, L1, L2) :-
0 is Number mod D, D1 is D + 1, X is Number / D,
( D =< X -> divisors(Number, D1, [X, D |L1], L2) ; L1 = L2).