-- -*- mode: eiffel -*-
-- $Id: sieve.se,v 1.4 2001/06/10 04:23:34 doug Exp $
-- http://www.bagley.org/~doug/shootout/

class SIEVE

creation make

feature

   make is

      local
     count: INTEGER;
     flags: ARRAY[CHARACTER];
     i: INTEGER;
     num: INTEGER;
     j: INTEGER;
     k: INTEGER;
      do
     if argument_count = 1 then
        num := argument(1).to_integer
     else
        num := 1
     end

     !!flags.make(0, 8193)

         from
            j := 0
         until
            j = num
         loop

        count := 0

        from
           i := 2
        until
           i > 8192
        loop
           flags.put('t', i)
           i := i + 1
        end

        from
           i := 2
        until
           i > 8192
        loop
           if flags.item(i) = 't' then
          from
             k := i + i
          until
             k > 8192
          loop
             flags.put('f', k)
             k := k + i
          end
          count := count + 1
           end
           i := i + 1
        end

            j := j + 1
         end

         std_output.put_string("Count: ")
         std_output.put_integer(count)
         std_output.put_character('%N')
      end;

end