Cod sursa(job #404351)
Utilizator | Data | 26 februarie 2010 08:11:33 | |
---|---|---|---|
Problema | Ciurul lui Eratosthenes | Scor | 100 |
Compilator | fpc | Status | done |
Runda | Arhiva educationala | Marime | 0.63 kb |
const maxn=2000000;
type sita=array[2..maxn]of boolean;
var n,p,q,nr:int64;
v:sita;
begin
assign(input,'ciur.in');
reset(input);
assign(output,'ciur.out');
rewrite(output);
readln(n);
p:=2;
nr:=0;
if n>2 then
begin
nr:=1;
v[p]:=true;
q:=4;
while q<=n do begin
v[q]:=true;
q:=q+2;
end;
p:=3;
end;
while p<=n do
begin
inc(nr);
v[p]:=true;
q:=p*p;
while q<=n do begin
v[q]:=true;
q:=q+p;
end;
while(p<=n)and(v[p])do inc(p,2);
end;
writeln(nr);
close(output);
close(input);
end.