Написать предикат, определяющий, являются ли его аргументы взаимно простыми числами - 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.

Объяснение кода листинга программы

  1. Задача кода - определить, являются ли два числа взаимно простыми.
  2. Предикат gcd(integer,integer,integer) принимает три аргумента типа integer (целые числа) и возвращает результат вычисления их наибольшего общего делителя (НОД).
  3. Предикат v_prime(integer,integer) принимает два аргумента типа integer и возвращает истину, если они взаимно простые, иначе - ложь.
  4. В первой клаузе предиката gcd используется стратегия обратного трассирования (backtracking). Если первое число меньше второго, то перебираются все возможные значения третьего аргумента. Если второе число меньше первого, то аргументы меняются местами и перебираются все возможные значения третьего аргумента. Если третье число равно нулю, то это означает, что числа взаимно простые, и мы заканчиваем поиск.
  5. Во второй клаузе предиката gcd используется стратегия прямого трассирования (forward chaining). Если остаток от деления первого числа на второе равен нулю, то это означает, что числа взаимно простые, и мы заканчиваем поиск.
  6. В третьей клаузе предиката gcd используется стратегия разбиения и поиска (divide and conquer). Если остаток от деления первого числа на второе равен нулю, то это означает, что числа взаимно простые, и мы заканчиваем поиск.
  7. Предикат v_prime(X,Y) использует предикат gcd для вычисления НОД двух чисел и проверки, равен ли он единице. Если это так, то числа взаимно простые, и мы возвращаем истину.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.909 из 5
Похожие ответы