Целочисленный квадратный корень из натурального числа N - Prolog

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

Задача:Напишите программу вычисления целочисленного квадратного корня из натурального числа N, определяемого как число I, такое, что I*I <= N, но (I+1)*(I+1) > N . Используйте определение предиката between/3 для генерирования последовательности натуральных чисел с помощью механизма возвратов. Прошу помощи так как испытываю проблемы с Prolog. Можно с пояснением кода

Код к задаче: «Целочисленный квадратный корень из натурального числа N - Prolog»

textual
predicates
isqrt_(integer,integer,integer)
isqrt(integer,integer)
 
clauses
isqrt_(I,Z,Z) :- Z*Z<=I, (Z+1)*(Z+1)>I.
isqrt_(I,Z,R) :- Z*Z<I, U=Z+1, isqrt_(I,U,R).
 
isqrt(I,R) :- isqrt_(I,1,R).

8   голосов, оценка 4.250 из 5


СОХРАНИТЬ ССЫЛКУ