Наименьший делитель натурального числа T - Prolog

Узнай цену своей работы

Формулировка задачи:

Добрый вечер. Имеется задача: Составьте программу, выводящую наименьший делитель натурального числа T, большего 1. Есть вот такой набросок на Turbo Prolog, но что-то не могу понять как правильно сделать. Подкорректируйте или подскажите что-нибудь, пожалуйста.
Листинг программы
  1. predicates
  2. result(integer, integer).
  3. calc(integer,integer,integer).
  4. clauses
  5. calc(_,2,2).
  6. calc(A,B,C):- B = A, B1 = B - 1, calc(A,B1,C);
  7. B > 1, B < A, A mod B = 0, C = A mod B;
  8. B > 1, B < A, A mod B <> 0, B1 = B - 1, calc(A.B1,C).
  9. result(A.B) :- calc(A,A,B).
изменил код он возвращает наибольший, а не наименьший. поправьте, пожалуйста, кто сможет.
Листинг программы
  1. predicates
  2. result(integer, integer).
  3. calc(integer,integer,integer).
  4. clauses
  5. calc(_,2,2).
  6. calc(A,B,C):- B = A, B1 = B - 1, calc(A,B1,C);
  7. B > 1, B < A, A mod B = 0, C = A div B;
  8. B > 1, B < A, A mod B <> 0, B1 = B - 1, calc(A.B1,C).
  9. result(A.B) :- calc(A,A,B).
все, разобрался.

Решение задачи: «Наименьший делитель натурального числа T»

textual
Листинг программы
  1. predicates
  2. ldiv(integer,integer,integer)
  3. task(integer,integer)
  4.  
  5. clauses
  6. ldiv(N,M,M) :- N mod M=0.
  7. ldiv(N,M,K) :- N mod M <> 0, M1=M+1, ldiv(N,M1,K).
  8.  
  9. task(N,M) :- ldiv(N,2,M).

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


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

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

9   голосов , оценка 3.667 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы