Rosetta Code
Isqrt (integer square root) of X
Compute integer square roots with a binary search over fixed sample inputs.
Source
rosettacode/popular/isqrt_integer_square_root_of_x.vibe
# title: Isqrt (integer square root) of X
# source: https://rosettacode.org/wiki/Isqrt_(integer_square_root)_of_X
# category: Rosetta Code
# difficulty: Intro
# summary: Compute integer square roots with a binary search over fixed sample inputs.
# tags: popular, math, search, integers
# vibe: 0.2
def isqrt(value)
if value < 2
return value
end
low = 1
high = (value / 2) + 1
answer = 1
while low <= high
middle = (low + high) / 2
square = middle * middle
if square == value
return middle
elsif square < value
answer = middle
low = middle + 1
else
high = middle - 1
end
end
answer
end
def run
values = [0, 1, 2, 3, 4, 10, 27, 81, 12345]
rows = []
index = 0
while index < values.length
value = values[index]
rows = rows.push({
value: value,
isqrt: isqrt(value)
})
index = index + 1
end
rows
end
Output
Press run to execute run from this example.