RosettaCodeData/Task/Isqrt-integer-square-root-of-X/PascalABC.NET/isqrt-integer-square-root-of-x.pas
2025-02-27 18:35:13 -05:00

30 lines
516 B
ObjectPascal

function isqrt(x: biginteger): biginteger;
begin
var q := 1bi;
result := 0bi;
while q <= x do
q := q shl 2;
while q > 1 do
begin
q := q shr 2;
var t := x - result - q;
result := result shr 1;
if t >= 0 Then
begin
x := t;
result += q;
end;
end;
end;
begin
for var n := 0 to 65 do
write(isqrt(n):2);
println(#10);
var n := 7bi;
for var i := 1 to 73 step 2 do
begin
writeln('isqrt(7^', i, ') = ', isqrt(n).ToString('N0'));
n *= 49;
end;
end.