function isqrt(n:integer):integer;
begin
result:=1;
while n>result*2+1 do begin n:=n-(result*2+1); inc(result); end;
end;
function isqrt3(n:integer):integer;
begin
result:=1;
while n>1+3*result*(result+1) do begin n:=n-(1+3*result*(result+1)); inc(result); end;
end;
Remarque :
Ne marche que pour N>0
set a 5
set n [expr isqrt($a)]