Главная
»
Информационные системы
»
Представление знаний в ИС
»
Опишите предикат, определяющий наибольший общий простой делитель двух целых чисел.
Опишите предикат, определяющий наибольший общий простой делитель двух целых чисел.
% Bilet11
% Patched 14.01.13
% To start type: jstart.
delit(X,Y):-0 is Y mod X.
between(X,Y,Z):-Y=<Z, X=Y.
between(X,Y,Z):-Y<Z,Y1 is Y+1, between(X,Y1,Z).
delitel(X,Y):-between(X,1,Y), delit(X,Y).
prostoe(X):-not (delitel(D,X),D\=X,D\=1).
max(X,Y,X):-
X>Y.
max(X,Y,Y):-
X<Y.
max(X,Y,Y):-
X=Y.
max_list([X],X).
max_list([H|T],M):-
max_list(T,M_T),
max(H,M_T,M).
delitels(X,Y,T):-delitel(T,Y),delitel(T,X).
nopd(X,Y,T):-setof(H,(delitels(X,Y,H),prostoe(H)),L),max_list(L,T).
jstart:- write(' 1e chislo: '),nl,read(JAM1),nl,
write(' 2e chislo: '),nl,read(JAM2),nl,
nopd(JAM1,JAM2,Z),
write(Z).
Друзья! Приглашаем вас к обсуждению. Если у вас есть своё мнение, напишите нам в комментарии.