Ответ в теме: Пары взаимно простых чисел

#3923

Для решения задачи нам потребуется функция проверки чисел на взаимную простоту, а также функция member для организации перебора чисел.

co_prime_pairs(ListA, ListB, pair(A, B)):-
  member(A, ListA),
  member(B, ListB),
  co_primes(A, B).

За счет использования базового для логического программирования механизма поиска с возвратами, вызовы member обеспечат генерацию всех возможных пар чисел из двух списков. Наша функция вернет пару лишь в том случае, если числа являются взаимно-простыми:

Если в результате работы функции требуется сформировать список пар – можно использовать функцию findall:

co_prime_pairs_list(ListA, ListB, Pairs):-
  findall(X, co_prime_pairs(ListA, ListB, X), Pairs).