algorytm.org

Implementacja w Ada



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Sito Eratostenesa - Implementacja w Ada
Ocena użytkownikóww: *****  / 4
SłabyŚwietny
Nadesłany przez Tomasz Lubiński, 26 lipca 2005 01:00
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.

Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.

SitoEratostenesa.adb:
--
-- sito Eratostenesa - poszukiwanie liczb pierwszych
-- www.algorytm.org
-- (c)2006 Tomasz Lubinski 
--

with Text_IO;
use Text_IO;

with Ada.Numerics.Generic_Elementary_Functions;

procedure SitoEratostenesa is
   j,dokad: Integer;
   zakres   : Integer := 100;
   tablica  : array (1..zakres) of Integer;
   package Math is new Ada.Numerics.Generic_Elementary_Functions(Float);    
begin

   dokad := Integer(Math.sqrt(Float(zakres)));

   -- inicjuj tablice
   for i in 1..zakres loop
      tablica(i) := i;
   end loop;   
   
   -- algorytm - sito eratostenesa
   for i in 2..dokad loop
      if tablica(i) /= 0 then
         j:= i + i;
         while j <= zakres loop
            tablica(j) := 0;
            j := j + i;
         end loop;
      end if;
   end loop;
   
   -- wypisz wynik
   Put_Line("Liczby pierwsze z zakresu od 1 do " & Integer'Image(zakres));
   for i in 2 .. zakres loop
      if tablica(i) /=0 then 
         Put(Integer'Image(i) & ", ");
      end if;
   end loop;

end;
Dodaj komentarz