Cod sursa(job #146812)

Utilizator TudorRTudor Radacineananu TudorR Data 2 martie 2008 10:58:15
Problema Ciurul lui Eratosthenes Scor 0
Compilator fpc Status done
Runda Arhiva educationala Marime 1.09 kb
var n,i,s,j,m:longint;
    v:array[1..2000000] of boolean;
    p:array[1..10000] of longint;
    f,g:text;
begin
        assign(f,'ciur.in');
        assign(g,'ciur.out');
        reset(f);
        rewrite(g);
        readln(f,n);
        for i:=1 to n do
                v[i]:=true;
        v[1]:=false;
        s:=trunc(sqrt(n));
        m:=0;
        for i:=2 to s do
            if v[i] then begin
                j:=i+i;
                while j<=n do begin
                        v[j]:=false;
                        j:=j+i
                end;
            end;
        inc(m);
        p[m]:=2;
        i:=3;
        while(i<=n) do
                begin
                        if v[i] then begin
                                inc(m);
                                p[m]:=i
                        end;
                        i:=i+2
                end;
        writeln(g,m);
        if m<=1000 then
                for i:=1 to m do write(g,p[i],' ')
        else
                for i:=m-1000+1 to m do write(g,v[i],' ');
        close(f);
        close(g);
end.