Como saber si un numero es primo en ProLog?
Publicado por Hide (2 intervenciones) el 08/02/2015 16:39:30
Buenas a todos, estaba buscando por Internet como saber si un numero es primo pues estoy empezando en prolog y aun no le pillo bien. Buscando encontré esto:
cicloP(N,A,S):-A>N,S is 0,!.
cicloP(N,A,S):- N mod A=:=0,A=\=N,A1 is A+1,cicloP(N,A1,Sm),S is Sm+A,!.
cicloP(N,A,S):- A1 is A+1,cicloP(N,A1,Sm),S is Sm.
perfect(N):-cicloP(N,1,T),T=:=N.
verifPrimo(N):-cicloP(N,1,T),T=:=1;N=:=1.
Me funciona pero no entiendo bien que es el Sm, que valor tiene o que función cumple en la función, si alguien pudiera explicármelo estaría muy agradecido.
Gracias de antemano ^^
cicloP(N,A,S):-A>N,S is 0,!.
cicloP(N,A,S):- N mod A=:=0,A=\=N,A1 is A+1,cicloP(N,A1,Sm),S is Sm+A,!.
cicloP(N,A,S):- A1 is A+1,cicloP(N,A1,Sm),S is Sm.
perfect(N):-cicloP(N,1,T),T=:=N.
verifPrimo(N):-cicloP(N,1,T),T=:=1;N=:=1.
Me funciona pero no entiendo bien que es el Sm, que valor tiene o que función cumple en la función, si alguien pudiera explicármelo estaría muy agradecido.
Gracias de antemano ^^
Valora esta pregunta


0