/********************************************************************** M_C_M.PRO Este programa obtiene el Minimo Comun Multiplo de una lista de numeros. (input) (output) mcm([6,3,9], R) R = 18 ******************************************************************/ DOMAINS i=integer lista=i* PREDICATES mcm(lista,i) min_com_mul(lista,i,i) opera(lista,i,lista) dame2(i,i) dame3(i,lista) unos(lista) CLAUSES mcm(L,R):-min_com_mul(L,2,R),!. min_com_mul(L,_,1):-unos(L),!. min_com_mul(L,I,R):-dame2(I,N),dame3(N,L),opera(L,N,L2), !,min_com_mul(L2,N,Rm),R=Rm*N. opera([],_,[]):-!. opera([X|L],N,[Y|L1]):-X mod N=0,Y=X/N,!,opera(L,N,L1). opera([X|L],N,[X|L1]):-!,opera(L,N,L1). dame2(N,N). dame2(N,M):-dame2(N,H),M=H+1. dame3(N,[X|_]):-X mod N = 0 ,!. dame3(N,[_|L]):-!,dame3(N,L). unos([]):-!. unos([1|L]):-!,unos(L).