Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save jhasmany-fernandez/67e1b1ab591cf78aa85531391e0cd917 to your computer and use it in GitHub Desktop.
Save jhasmany-fernandez/67e1b1ab591cf78aa85531391e0cd917 to your computer and use it in GitHub Desktop.
U.A.G.R.M. | Materia: Programacion Logica y Funcional | Docente: Edwin Vargas Yapura | Repositorio: Predicados Recursivos e Iterativos | Lenguaje: Prolog
% ---------------------------------------------+
% GRUPO: 11 | ╔═══╗ ♪
% NOMBRE: FERNANDEZ ORTEGA JHASMANY JHUNNIOR | ║███║ ♫
% MATERIA: INF 318 - SA | ║ (●) ♫
% ---------------------------------------------+ ╚═══╝♪♪
% |---------------------------------------------+
% |PREDICADOS RECURSIVOS E ITERATIVOS. |
% |_____________________________________________+
% ---------------------------------------------+
% PROPIETARIO: FLORES SARMIENTO KEVIN JHOEL |
% MATERIA: INF 318 - SA |
% ---------------------------------------------+
mostrarDivisores(N):- mostrarDivisoresR(N,1).
mostrarDivisoresR(N,N):- write(N), !.
mostrarDivisoresR(N,I):- N mod I =:= 0, write(I), nl,
I1 is I+1, mostrarDivisoresR(N,I1), !.
mostrarDivisoresR(N,I):- I1 is I+1, mostrarDivisoresR(N,I1).
primo(N):- primo(N, 2).
primo(N, I) :- N>1, I > N / 2, !.
primo(N, I) :- N>1, N mod I =\= 0,
I1 = I + 1,
primo(N, I1).
mostrarDivisoresPrimos(N):- mostrarDivisoresPrimosR(N,2).
mostrarDivisoresPrimosR(N,I):- I>N, !.
mostrarDivisoresPrimosR(N,I):- N mod I =:= 0, primo(I), write(I), nl,
I1 is I+1, mostrarDivisoresPrimosR(N,I1), !.
mostrarDivisoresPrimosR(N,I):- I1 is I+1, mostrarDivisoresPrimosR(N,I1).
mostrarPrimos(A,B):- mostrarPrimosR(A,B).
mostrarPrimosR(I,B):- I>B, !.
mostrarPrimosR(I,B):- primo(I), write(I), nl, I1 is I+1,
mostrarPrimosR(I1,B), !.
mostrarPrimosR(I,B):- I1 is I+1, mostrarPrimosR(I1,B).
mostrarDivisoresDesc(N):- mostrarDivisoresDescR(N,N).
mostrarDivisoresDescR(_,0):- !.
mostrarDivisoresDescR(N,I):- N mod I =:= 0, write(I), nl, I1 is I-1,
mostrarDivisoresDescR(N,I1), !.
mostrarDivisoresDescR(N,I):- I1 is I-1, mostrarDivisoresDescR(N,I1).
mostrarDivisoresComunes(N,M):- mostrarDivisoresComunesR(N,M,1).
mostrarDivisoresComunesR(N,M,I):- (I>N ; I>M), !.
mostrarDivisoresComunesR(N,M,I):- N mod I =:= 0, M mod I =:= 0, write(I), nl,
I1 is I+1, mostrarDivisoresComunesR(N,M,I1), !.
mostrarDivisoresComunesR(N,M,I):- I1 is I+1, mostrarDivisoresComunesR(N,M,I1).
mostrarDivisoresPares(N):- mostrarDivisoresParesR(N,1).
mostrarDivisoresParesR(N,I):- I>N, !.
mostrarDivisoresParesR(N,I):- N mod I =:= 0, I mod 2 =:= 0, write(I), nl,
I1 is I+1, mostrarDivisoresParesR(N,I1), !.
mostrarDivisoresParesR(N,I):- I1 is I+1, mostrarDivisoresParesR(N,I1).
mostrarDivisoresImpares(N):- mostrarDivisoresImparesR(N,1).
mostrarDivisoresImparesR(N,I):- I>N, !.
mostrarDivisoresImparesR(N,I):- N mod I =:= 0, I mod 2 =\= 0, write(I), nl,
I1 is I+1, mostrarDivisoresImparesR(N,I1), !.
mostrarDivisoresImparesR(N,I):- I1 is I+1, mostrarDivisoresImparesR(N,I1).
mostrarDivisores(_,A,B):- A>B, !.
mostrarDivisores(N,A,B):- N mod A =:= 0, write(A),nl, A1 is A+1,
mostrarDivisores(N,A1,B).
mostrarDivisores(N,A,B):- A1 is A+1, mostrarDivisores(N,A1,B).
proximoPrimo(N,P):- proximoPrimoR(N,P,N).
proximoPrimoR(_,P,I):- primo(I), P is I, !.
proximoPrimoR(N,P,I):- I1 is I+1, proximoPrimoR(N,P,I1).
anteriorPrimo(N,A):- anteriorPrimoR(N,A,N).
anteriorPrimoR(_,_,1):- !.
anteriorPrimoR(_,A,I):- primo(I), A is I, !.
anteriorPrimoR(N,A,I):- I1 is I-1, anteriorPrimoR(N,A,I1).
mostrarDivisoresPrimosAsc(N):- mostrarDivisoresPrimosR(N,2).
mostrarDivisoresPrimosDesc(N):- mostrarDivisoresPrimosDescR(N,N).
mostrarDivisoresPrimosDescR(_,1):-!.
mostrarDivisoresPrimosDescR(N,I):- N mod I =:= 0, primo(I), write(I), nl,
I1 is I-1, mostrarDivisoresPrimosDescR(N,I1), !.
mostrarDivisoresPrimosDescR(N,I):- I1 is I-1, mostrarDivisoresPrimosDescR(N,I1).
% Factorial.
factorial(0, 1):- !.
factorial(N, F):- N1 is N - 1, factorial(N1, F1), F is N * F1.
mostrarFactoriales(N):- mostrarFactorialesR(N,1).
mostrarFactorialesR(N,I):- I>N, !.
mostrarFactorialesR(N,I):- factorial(I,E), write(I), write('!= '),
write(E), nl, I1 is I+1, mostrarFactorialesR(N,I1).
% Números Combinatorios.
combinatoria(_, 0, 1):- !.
combinatoria(X, X, 1):- !.
combinatoria(N, R, C):- N1 is N -1, R1 is R - 1, combinatoria(N1, R, C1), combinatoria(N1, R1, C2), C is C1 + C2.
mostrarCoefBin(N):- mostrarCoefBinR(N,1).
mostrarCoefBinR(N,I):- I=:=N+1, write('1.'), !.
mostrarCoefBinR(N,I):- I1 is I-1, combinatoria(N,I1,C),
write(C), write(','),I2 is I+1, mostrarCoefBinR(N,I2).
% Fibonacci.
fibonacii(1, 0):- !.
fibonacii(2, 1):- !.
fibonacii(N, F):- N1 is N - 1, N2 is N - 2, fibonacii(N1, F1), fibonacii(N2, F2), F is F1 + F2.
mostrarFib(N):- mostrarFibR(N,1).
mostrarFibR(N,N):- fibonacii(N,R), write(R), write(','), !.
mostrarFibR(N,I):- fibonacii(I,R), write(R), write(','), I1 is I+1,
mostrarFibR(N,I1).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment