(defun integer-sqrt (num)
(if (zerop num)
0
(labels ((next-approx (curr)
(truncate (/ (+ curr (truncate (/ num curr))) 2)))
(int-sqrt (n n1)
(if (>= n1 n)
n
(int-sqrt n1 (next-approx n1)))))
(let ((first-aprox (1+ (truncate (/ num 2)))))
(int-sqrt first-aprox (next-approx first-aprox))))))
(integer-sqrt 26)
IChkZWZ1biBpbnRlZ2VyLXNxcnQgKG51bSkKICAgKGlmICh6ZXJvcCBudW0pCiAgICAgMAogICAgIChsYWJlbHMgKChuZXh0LWFwcHJveCAoY3VycikKICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRydW5jYXRlICgvICgrIGN1cnIgKHRydW5jYXRlICgvIG51bSBjdXJyKSkpIDIpKSkKICAgICAgICAgICAgICAoaW50LXNxcnQgKG4gbjEpCiAgICAgICAgICAgICAgICAgICAgICAgIChpZiAoPj0gbjEgbikKICAgICAgICAgICAgICAgICAgICAgICAgICBuCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGludC1zcXJ0IG4xIChuZXh0LWFwcHJveCBuMSkpKSkpCiAgICAgICAobGV0ICgoZmlyc3QtYXByb3ggKDErICh0cnVuY2F0ZSAoLyBudW0gMikpKSkpCiAgICAgICAgIChpbnQtc3FydCBmaXJzdC1hcHJveCAobmV4dC1hcHByb3ggZmlyc3QtYXByb3gpKSkpKSkKCihpbnRlZ2VyLXNxcnQgMjYp