blob: f6eb6a034ec54509d543ed6c0e94b938c1c89bf6 [file] [log] [blame]
-- { dg-do compile { target { lp64 || llp64 } } }
-- { dg-options "-O2 -gnatws" }
procedure Main is
subtype Int64 is Long_Long_Integer;
type Arr is array (Int64 range <>) of Boolean;
Pow : constant := 10;
procedure Compute (B : in out Arr) is
Factor : Int64 := 3;
Num : Int64;
begin
while Factor <= 10 ** (Pow / 2) loop
Num := Factor;
while Num < 10 ** Pow loop
if B (Num) then
Factor := Num;
exit;
end if;
Num := Num + 2;
end loop;
Num := Factor * Factor;
while Num < 10 ** Pow loop
B (Num) := False;
Num := Num + Factor * 2;
end loop;
Factor := Factor + 2;
end loop;
end;
B : Arr (1 .. 10 ** Pow) := (others => True);
begin
Compute (B);
end;