Пролог - получить факторы для данного числа не останавливается?

Мне нужно найти факторы данного числа, например:

?- divisors2(40,R).
R = [40,20,10,8,5,4,2,1].

Код :

% get all the numbers between 1-X 
range(I,I,[I]).
range(I,K,[I|L]) :- I < K, I1 is I + 1, range(I1,K,L).
% calc the modulo of each element with the given number :
% any x%y=0 would be considered as part of the answer 
divisors1([],[],_).
divisors1([H|T],S,X):-divisors1(T,W,X),Z is X mod H,Z==0,S=[H|W].
divisors1([_|T],S,X):-divisors1(T,S,X).
divisors2(X,Result) :-range(1,X,Result1),divisors1(Result1,Result,X).

Но когда я бегуdivisors2(40,RR). Я получаю бесконечный цикл, и на экране ничего не отображается.

Зачем ?

С уважением

Ответы на вопрос(3)

Ваш ответ на вопрос