1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
% 2 est un nombre premier, on ne va pas plus loin
is_prime(2,yes) :- !.
/* ToF = True or False */
% On est sûr que X est plus grand que 2
% on appelle la fonction de calcul initialisée
% le retour de celle-ci est le retour recherché
is_prime(X,ToF) :-
Y is X-1,
is_prime_1(X,Y,ToF).
% la décrémentation du diviseur est terminée,
% le nombre est premier, on s'arrête
is_prime_1(_X,1,yes) :- !.
% X est divisible par Y,
% X n'est pas premier, on s'arrête
is_prime_1(X,Y,no) :-
0 is X mod Y, !.
% on continue le calcul
is_prime_1(X,Y,ToF) :-
Y1 is Y-1,
is_prime_1(X,Y1,ToF). |
Partager