Contributor: SWAG SUPPORT TEAM 
(***** Find the square-root of an Integer between 1..2,145,635,041 *)
(* *)
Function FindSqrt({input} lo_in : LongInt) : {output} LongInt;
 (***** SUB : Find square-root For numbers less than 65417. *)
 (* *)
 Function FS1({input } wo_in : Word) : {output} Word;
 Var
 wo_Temp : Word;
 begin
 wo_Temp := 1;
 While ((wo_Temp * wo_Temp) < wo_in) do inc(wo_Temp, 11); While((wo_Temp * wo_Temp)> wo_in) do
 dec(wo_Temp);
 FS1 := wo_Temp
 end; (* SUB : FS1. *)
 (***** SUB : Find square-root For numbers greater than 65416. *)
 (* *)
 Function FS2(lo_in : LongInt) : LongInt;
 Var
 lo_Temp : LongInt;
 begin
 lo_Temp := 1;
 While ((lo_Temp * lo_Temp) < lo_in) do inc(lo_Temp, 24); While((lo_Temp * lo_Temp)> lo_in) do
 dec(lo_Temp);
 FS2 := lo_Temp
 end; (* SUB : FS2. *)
begin
 if (lo_in < 64517) then
 FindSqrt := FS1(lo_in)
 else
 FindSqrt := FS2(lo_in)
end; (* FindSqrt. *)
{
 ...I've now re-written the "seive" Program, and it appears to now
 run about twice as fast. I'll post the new improved source-code in
 another message.
} 

AltStyle によって変換されたページ (->オリジナル) /