Prolog - PROGRAMA PARA HALLAR PRIMOS

 
Vista:
sin imagen de perfil

PROGRAMA PARA HALLAR PRIMOS

Publicado por kervy (1 intervención) el 14/04/2015 20:05:53
hola!, he creado este programa en swi prolog que comprueba si un numero es primo, es el siguiente:

compruebo(_, 1, s(0)).

compruebo(A, A, s(Y)):- C is A - 1,
compruebo(A, C, Y).

compruebo(A, B, s(Y)):- A \== B,
D is B - 1,
div(A, B, _),
compruebo(A, D, Y).

compruebo(A, B, Y):- A \== B,
D is B - 1,
not( div(A, B, _)),
compruebo(A, D, Y).

div(A, B, s(C)) :- A > 0, D is A - B, div(D, B, C).
div(0, _ , 0).

donde compruebo(A, B, C) , C es el numero de divisiones que se puede realizar al numero si es primo retorna 2 porque se divide entre si mismo y uno, en cambio si no es primo retorma mayor que dos. le doy dos numero iguales 5, 5 ... luego disminuye a 5, 4 luego 5, 3... y asi divide entre todos los numero antecesores a A

cuando hago una consulta el programa no me bota una respuesta. alguien ve el error me ayudarian muuuchoo.
ahh y cuando cambio el ultimo compruebo le cambio de compruebo(A, B, Y) a compruebo(A, B, s(Y)), el error se va pero no se la causa exacta
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder