Наименьший делитель натурального числа T - Prolog
Формулировка задачи:
Добрый вечер. Имеется задача:
Составьте программу, выводящую наименьший делитель натурального числа T, большего 1.
Есть вот такой набросок на Turbo Prolog, но что-то не могу понять как правильно сделать. Подкорректируйте или подскажите что-нибудь, пожалуйста.
Листинг программы
- predicates
- result(integer, integer).
- calc(integer,integer,integer).
- clauses
- calc(_,2,2).
- calc(A,B,C):- B = A, B1 = B - 1, calc(A,B1,C);
- B > 1, B < A, A mod B = 0, C = A mod B;
- B > 1, B < A, A mod B <> 0, B1 = B - 1, calc(A.B1,C).
- result(A.B) :- calc(A,A,B).
изменил код
он возвращает наибольший, а не наименьший. поправьте, пожалуйста, кто сможет.
Листинг программы
- predicates
- result(integer, integer).
- calc(integer,integer,integer).
- clauses
- calc(_,2,2).
- calc(A,B,C):- B = A, B1 = B - 1, calc(A,B1,C);
- B > 1, B < A, A mod B = 0, C = A div B;
- B > 1, B < A, A mod B <> 0, B1 = B - 1, calc(A.B1,C).
- result(A.B) :- calc(A,A,B).
все, разобрался.
Решение задачи: «Наименьший делитель натурального числа T»
textual
Листинг программы
- predicates
- ldiv(integer,integer,integer)
- task(integer,integer)
- clauses
- ldiv(N,M,M) :- N mod M=0.
- ldiv(N,M,K) :- N mod M <> 0, M1=M+1, ldiv(N,M1,K).
- task(N,M) :- ldiv(N,2,M).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д