domingo, 26 de agosto de 2012

PROGRAMACIÓN EN PROLOG:

Algoritmos generales:


% Autor: lcfb
% Fecha: 14/05/2012

%MCD algoritmmo de  euclides
%mcd(M,N,Y) : Y es el MCD de M  y N
mcd(M,N,N):- X is M mod N, X=0,!.
mcd(M,N,Y):- X is M mod N, mcd(N,X,Y).

%MCD5 mcd de 5 cifras
mcd5(M,N,O,P,Q,Y):-  mcd(M,N,A),mcd(O,P,B),mcd(A,B,C),mcd(Q,C,Y).

%Suma de cifras(N,S): S es la suma de cifras de N
suma_cifras(N,N):- N<10,!.
suma_cifras(N,S):- C is N // 10,
                   R is N mod 10,
                   suma_cifras(C,S1),
                   S is S1+R.

%Decimal a Binario:
decimal_binario(D,D):- D<2,!.
decimal_binario(D,B):- R is D mod 2,C is D // 2, decimal_binario(C,B1),B is B1*10+R.

%Cualquier base a decimal:
base_decimal(N,B,N):- N<B,!.
base_decimal(N,B,D):- R is N mod 10, C is N // 10,base_decimal(C,B,D1),D is D1*B+R.




%Base a base
 base_base(N,B1,B2,N):- N<B2,!.
 base_base(N,B1,B2,S):- base_decimal(N,B1,D),D is N,R is N mod B2, C is N // B2
                    , base_base(C,B1,B2,S1),S is S1*10+R.

%Suma de Numeros
 num_exp(N,S):- N=1, !, write(1).
 num_exp(N,S):- R is N mod 2, C is N // 2,num_exp(C,S1), S is S1,write('+').

No hay comentarios:

Publicar un comentario