Cod sursa(job #405128)

Utilizator nickyyLal Daniel Emanuel nickyy Data 27 februarie 2010 16:45:00
Problema Ciurul lui Eratosthenes Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 0.66 kb
const infile='ciur.in';
  outfile='ciur.out';
  maxn=2000001;
var n,nr:longint;
  p:array[1..maxn]of 0..1;
  //p[i]=0 daca 2*i+1 este prim

 procedure prim;
 var i,j:longint;
 begin
  //parcurg toate numerele inpare mai mari decat i*i
   i:=1;
   while(2*(i*i+i)<=n)do begin
     if(p[i]=0)then begin
       j:=2*(i*i+i);
       while(2*j+1<=n)do begin p[j]:=1; inc(j,2*i+1); end;
       end;
     inc(i);
     end;
   i:=1; while(2*i+1<=n)do begin if(p[i]=0)then inc(nr);  inc(i); end;
 end;

begin
  assign(input,infile); reset(input); readln(n); close(input);
  prim;
  assign(output,outfile); rewrite(output); write(nr+1); close(output);
end.