Наибольший общий делитель последовательности чисел ( 3 числа желательно). - Prolog
Формулировка задачи:
Наибольший общий делитель последовательности чисел ( 3 числа желательно).
Извините пожалуйста что о таком прошу, просто пролог вообще не понимаю(( искал на форуме похожие темы находил, но нече не получалось, можете дать реализацию в турбо-прологе весь код, я могу блин в любом другом языке это зделать, а тут нет. Помогите пожалуйста.
И вообще с кем можно пообщаться по прологу)) и кто может дать литературу где нормально расписанно что и как делаеться, обьявление, синтаксис,пож=)
Решение задачи: «Наибольший общий делитель последовательности чисел ( 3 числа желательно).»
textual
Листинг программы
domains i=integer il=i* predicates nod(i,i,i) nod_list(il,i) clauses nod(N,M,M):-N mod M=0,!. nod(N,M,R):-M1=N mod M,N1=M,nod(N1,M1,R). nod_list([A,B],R):-nod(A,B,R),!. nod_list([X|Tail],R):-nod_list(Tail,RTail),nod(X,RTail,R). goal nod_list([120,30,45,95],J).
Объяснение кода листинга программы
- Начинается с объявления двух доменов: i (целое число) и il (i умножить на себя).
- Затем объявляются два предиката: nod (N, M, M) и nod_list (il, i).
- В первом предикате (nod) проверяется, делится ли первое число (N) на второе (M) без остатка. Если да, то выводится сообщение и происходит завершение работы. Если нет, то вычисляется третье число (M1), равное остатку от деления N на M, и происходит рекурсивный вызов первого предиката с новыми значениями.
- Во втором предикате (nod_list) идет проверка списка чисел. Если список пустой, то происходит завершение работы. Если в списке есть элементы, то происходит рекурсивный вызов второго предиката с новыми значениями.
- В цели (goal) задается список чисел [120,30,45,95] и переменная J.
- Код пытается найти наибольший общий делитель чисел из списка.
- Результатом работы программы будет число J, которое будет содержать наибольший общий делитель чисел из списка.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д