Eratostenovo sito na výpočet prvočísel

Delphi & Pascal (česká wiki)
Přejít na: navigace, hledání
Kategória: Zadania Pascal

Autor: Pheo
web: pascalsource.ic.cz

Program: Eratostenovo_sito.pas
Súbor exe: Eratostenovo_sito.exe

Program na výpis prvočísel z intervalu medzi 1 a n. Napíše prvé prvočíslo 2 a vyčiarkne jeho všetky násobky, vypíše prvé nevyčiarknuté a vyčiarkne jeho násobky. Podobne postupuje ďalej, čo ostane sú prvočísla. Použije teda eratostenovo sito.
{ ERATOSTENOVO_SITO.PAS                          Copyright (c) Pheo }
{ Program na vypis prvocisel z intervalu medzi 1 a n.               }
{ Napise prve prvocislo 2 a vyciarkne jeho vsetky nasobky vypise    }
{ prve nevyciarknute a vyciarkne jeho nasobky podobne postupuje     }
{ dalej, co ostane su prvocisla. Pouzije eratostenovo sito.         }
{                                                                   }
{ Datum:17.05.2000                             http://www.trsek.com }
 
program eratostenovo_sito; {napise prve prvocislo 2 a vyciarkne jeho vsetky nasobky}
uses crt;                  {vypise prve nevyciarknute a vyciarkne jeho nasobky}
const max=500;             {podobne postupuje dalej, co ostane su prvocisla}
VAR N,I,J,P:word;
          a:array [2..max] of word;
begin
   clrscr;
   gotoxy(5,5);
   writeln('zvol hornu hranicu intervalu (1,n>');
   gotoxy(5,7);
   readln(n);
   gotoxy(5,10);
   for i:=2 to n do a[i]:=i;
   p:=2;
   while p<= sqrt(n) do
       begin
          for i:=p+1 to n do
             if a[i] mod p = 0 then a[i]:=0;
          repeat p:=p+1 until p<>0;   {dalsie nenulove cislo}
       end;
   write ('Prvocisla: ');
   for i:=2 to n do if a[i]<>0 then write(a[i],',');
   repeat until keypressed;
end.