30 lines
516 B
ObjectPascal
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.
|