uses crt; { pouzijeme knihovnu funkci pro praci s obrazovkou a klavesnici }
const
  n = 500; { budeme chtit najit prvocisla v intervalu 1..n }
type
  TSieve = packed array[1..n] of boolean; { typ pro ulozeni sita }
var
  sieve : TSieve;
  i, j : word;
begin
  { zinicializujeme pole - kazde cislo oznacime jako neskrtnute }
  for i := 1 to n do sieve[i] := false;

  { vezmeme kazde cislo }
  for i := 2 to n do
  begin

    { pokud je neskrtnute, tak to je prvocislo }
    if not sieve[i] then
    begin

      { vypiseme ho }
      write(i, ' ');

      { proskrtame nasobky }
      j := 2 * i; { jako prvni budeme chtit skrtnout dvojnasobek }
      while (j <= n) do { skrtat budeme jen cisla mensi nez n }
      begin
        sieve[j] := true; { skrtneme j }
        j := j + i; { prejdeme k dalsimu nasobku i }
      end; { konec proskrtavaciho cyklu }
    end; { konec ifu }
  end;

  writeln;
  readkey; { pockame na stisk klavesy, at si stihneme precist vystup }
end.

