» » »

Определите предикат для вычисления суммы делителей числа.

% Bilet16
% Patched by JamshyT 14.01.13
% Special for AISTd-31 :)
% To start type: jstart.
dlina([],0).
dlina([H|T],X):-dlina(T,X1), X is X1+1.

delit(X,Y):-0 is Y mod X.

between(X,Y,Z):-Y=<Z, X=Y.
between(X,Y,Z):-Y<Z,Y1 is Y+1, between(X,Y1,Z).

delitel(X,Y):-between(X,1,Y), delit(X,Y).

sum([],0).
sum([H|T],X):-sum(T,X1), X is X1+H.

sumDelit(X,T):-setof(H,delitel(H,X),L),sum(L,T).
jstart:- write(' Vvedite chislo: '),nl,read(IJAM1),nl,
sumDelit(IJAM1,T),
write(T).

Друзья! Приглашаем вас к обсуждению. Если у вас есть своё мнение, напишите нам в комментарии.