comp.lang.ada
 help / color / mirror / Atom feed
From: montgrimpulo <aghte@hotlinemail.com>
Subject: Prime sieve
Date: Wed, 27 May 2015 07:35:00 -0700 (PDT)
Date: 2015-05-27T07:35:00-07:00	[thread overview]
Message-ID: <dad3d5ce-c395-41a5-8845-f9400f2cb12d@googlegroups.com> (raw)

with Ada.Text_IO;         use Ada.Text_IO;
with Ada.Integer_Text_IO; use Ada.Integer_Text_IO;
procedure Primes_by_Sieve is
   task type Sieve is
      entry Pass_on (Int : Integer);
   end Sieve;

   task P6n;

   type Sieve_Ptr is access Sieve;

   function Get_New_Sieve return Sieve_Ptr is
   begin
      return new Sieve;
   end Get_New_Sieve;

   task body P6n is
      Limit : constant Integer := 2580976;
      Num   : Integer          := 1;
      S     : Sieve_Ptr        := new Sieve;
   begin
      while Num <= Limit loop
         S.Pass_on (6 * Num - 1);
         S.Pass_on (6 * Num + 1);
         Num := Num + 1;
      end loop;
   end P6n;

   task body Sieve is
      New_Sieve  : Sieve_Ptr;
      Prime, Num : Integer;
   begin
      accept Pass_on (Int : Integer) do
         Prime := Int;
      end Pass_on;
      New_Line;
      Put (Prime);
      loop
         select
            accept Pass_on (Int : Integer) do
               Num := Int;
            end Pass_on;
         or
            terminate;
         end select;
         exit when Num rem Prime /= 0;
      end loop;

      New_Sieve := Get_New_Sieve;
      New_Sieve.Pass_on (Num);

      loop
         select
            accept Pass_on (Int : Integer) do
               Num := Int;
            end Pass_on;
         or
            terminate;
         end select;
         if Num rem Prime /= 0 then
            New_Sieve.Pass_on (Num);
         end if;
      end loop;
   end Sieve;

begin
   null;
end Primes_by_Sieve;

The program above stops normally long before Limit (2580976). Which internal 
restrictions do apply (GNAT, GPS 4.9.1) ?

             reply	other threads:[~2015-05-27 14:35 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-27 14:35 montgrimpulo [this message]
2015-05-27 14:58 ` Prime sieve Paul Rubin
2015-05-27 15:01 ` Egil H H
2015-05-27 15:14 ` J-P. Rosen
2015-05-27 17:39 ` Jeffrey R. Carter
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox