Дефиниция на ПРОЛОГ на предикат p(X,Y,N), който по дадени естествени числа X,Y връща в N:
Вариант А
броят на числата, които делят X, но не делят Y
Вариант Б
броят на общите делители на X и Y
б) Да се напише генератор без повторения на множеството
Вариант А
{ (x,y) | x>=1, y>=1 и броят на числата, който делят X, но не делят Y е точно Y }
Вариант Б
{ (x,y) | x>=y и броят на общите делители на X и Y е точно 5 }
Време за работа – 2 часа.
int(0). int(X):-int(Y), X is Y + 1. between(X, Y, X):- X =< Y. between(X, Y, Z):- X < Y, X1 is X + 1, between(X1, Y, Z). ph(X, X, _, 0):-!. ph(X, _, D, 0):- D > X, !. ph(X, Y, D, N):- D =< X, X mod D =:= 0, Y mod D =\= 0, !, D1 is D + 1, ph(X, Y, D1, N1), N is N1 + 1. ph(X, Y, D, N):- D =< X, D1 is D + 1, ph(X, Y, D1, N). zad2_p(X, Y, N):- ph(X, Y, 2, N). zad2_gen_xy([X, Y]):-int(X), between(1, X, Y), zad2_p(X, Y, Y). ?-zad2_p(17,12,X),write(X).