35 lines
673 B
Lua
35 lines
673 B
Lua
function isqrt(x)
|
|
local q = 1
|
|
local r = 0
|
|
while q <= x do
|
|
q = q << 2
|
|
end
|
|
while q > 1 do
|
|
q = q >> 2
|
|
local t = x - r - q
|
|
r = r >> 1
|
|
if t >= 0 then
|
|
x = t
|
|
r = r + q
|
|
end
|
|
end
|
|
return r
|
|
end
|
|
|
|
print("Integer square root for numbers 0 to 65:")
|
|
for n=0,65 do
|
|
io.write(isqrt(n) .. ' ')
|
|
end
|
|
print()
|
|
print()
|
|
|
|
print("Integer square roots of oddd powers of 7 from 1 to 21:")
|
|
print(" n | 7 ^ n | isqrt(7 ^ n)")
|
|
local p = 7
|
|
local n = 1
|
|
while n <= 21 do
|
|
print(string.format("%2d | %18d | %12d", n, p, isqrt(p)))
|
|
----------------------
|
|
n = n + 2
|
|
p = p * 49
|
|
end
|