Написать предикат, определяющий, являются ли его аргументы взаимно простыми числами - Prolog
Формулировка задачи:
Помогите пожалуйста! Надо написать предикат, определяющий, являются ли его аргументы взаимно простыми числами. Взаимно простыми называются числа, наибольший общий делитель которых равен единице.
Решение задачи: «Написать предикат, определяющий, являются ли его аргументы взаимно простыми числами - Prolog»
textual
Листинг программы
predicates gcd(integer,integer,integer) v_prime(integer,integer) clauses gcd(M,N,R):- M < N, gcd(N,M,R),!. gcd(M,N,N):- M mod N = 0, !. gcd(M,N,R):- MM=M mod N, gcd(N,MM,R). v_prime(X,Y) :- gcd(X,Y,Z), Z=1.
Объяснение кода листинга программы
- Задача кода - определить, являются ли два числа взаимно простыми.
- Предикат
gcd(integer,integer,integer)
принимает три аргумента типаinteger
(целые числа) и возвращает результат вычисления их наибольшего общего делителя (НОД). - Предикат
v_prime(integer,integer)
принимает два аргумента типаinteger
и возвращает истину, если они взаимно простые, иначе - ложь. - В первой клаузе предиката
gcd
используется стратегия обратного трассирования (backtracking). Если первое число меньше второго, то перебираются все возможные значения третьего аргумента. Если второе число меньше первого, то аргументы меняются местами и перебираются все возможные значения третьего аргумента. Если третье число равно нулю, то это означает, что числа взаимно простые, и мы заканчиваем поиск. - Во второй клаузе предиката
gcd
используется стратегия прямого трассирования (forward chaining). Если остаток от деления первого числа на второе равен нулю, то это означает, что числа взаимно простые, и мы заканчиваем поиск. - В третьей клаузе предиката
gcd
используется стратегия разбиения и поиска (divide and conquer). Если остаток от деления первого числа на второе равен нулю, то это означает, что числа взаимно простые, и мы заканчиваем поиск. - Предикат
v_prime(X,Y)
использует предикатgcd
для вычисления НОД двух чисел и проверки, равен ли он единице. Если это так, то числа взаимно простые, и мы возвращаем истину.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д