Cod sursa(job #306602)
Utilizator | Data | 21 aprilie 2009 15:42:47 | |
---|---|---|---|
Problema | Ciurul lui Eratosthenes | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.52 kb |
#include <fstream.h>
#include <math.h>
ifstream f("ciur.in");
ofstream g("ciur.out");
long n;
char p[2000001];
void citire ()
{ f>>n;
f.close ();
}
long nr_prime ()
{ long i,j,aux=sqrt(n);
long nr=1;
for (i=3; i<=aux; i+=2)
if (p[i]==0)
{ nr++;
for (j=i+i+i; j<=n; j+= i<<1)
p[j]=1;
}
for (; i<=n; i+=2)
if (p[i]==0)
nr++;
return nr;
}
int main ()
{ citire ();
g<<nr_prime ();
g.close ();
return 0;
}