with Instrument;
use Instrument;

procedure Sieva1 is

    -- PRAGMA SUPPRESS (ACCESS_CHECK);
    -- PRAGMA SUPPRESS (DISCRIMINANT_CHECK);
    -- PRAGMA SUPPRESS (INDEX_CHECK);
    -- PRAGMA SUPPRESS (LENGTH_CHECK);
    -- PRAGMA SUPPRESS (RANGE_CHECK);
    -- PRAGMA SUPPRESS (DIVISION_CHECK);
    -- PRAGMA SUPPRESS (OVERFLOW_CHECK);
    -- PRAGMA SUPPRESS (STORAGE_CHECK);

    Size : constant Integer := 8_190;
    Flags : array (0 .. Size) of Boolean;
    Count : Integer := 0;
    Times : constant Integer := 1000;

    procedure Primes is
        Prime, K : Integer;
    begin
        --    FOR I IN 0..SIZE LOOP
        --      FLAGS (I) := TRUE;
        --    END LOOP;
        --    COUNT := 2;
        --    FOR I IN 0..SIZE LOOP
        --      IF FLAGS (I) = TRUE THEN
        --        PRIME := I + I + 3;
        --        K := I + PRIME;
        --        WHILE K <= SIZE LOOP
        --          FLAGS (K) := FALSE;
        --          K := K + PRIME;
        --        END LOOP;
        --        COUNT := COUNT + 1;
        --      END IF;
        --    END LOOP;
        K := Ident_Int (K);
    end Primes;

begin
    Start ("SIEVA1", "Sieve of Eratosthenes (control)");
    for I in 1 .. Times loop
        Primes;
    end loop;
    Stop;
end Sieva1;