-- $Id: sieve.gnat,v 1.0 2003/06/11 12:03:00 dada Exp $ -- http://dada.perl.it/shootout/ -- Ada 95 code by C.C. with Text_IO, Ada.Command_Line; procedure Sieve is High : constant := 8192; Is_Prime : array (2 .. High) of Boolean; Count, K, N : Natural := 0; begin begin N := Natural'Value (Ada.Command_Line.Argument (1)); exception when Constraint_Error => null; end; for Iter in 1 .. N loop declare pragma Suppress (Overflow_Check); pragma Suppress (Index_Check); pragma Suppress (Range_Check); begin Count := 0; Is_Prime := (others => True); for J in Is_Prime'Range loop if Is_Prime (J) then K := J + J; while K <= Is_Prime'Last loop Is_Prime (K) := False; -- K is not a prime since a K := K + J; -- multiple of prime J end loop; Count := Count + 1; end if; end loop; end; end loop; Text_IO.Put_Line ("Count:" & Natural'Image (Count)); end Sieve;