Cod sursa(job #1170163)
Utilizator | Bogdan Ciobanu bciobanu | Data | 12 aprilie 2014 19:39:14 |
---|---|---|---|
Problema | Ciurul lui Eratosthenes | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.54 kb |
#include <cstdio>
#include <bitset>
static const int NMAX=2000005;
std::bitset<NMAX> V;
int ciur(int limit)
{
int i,j,ii,nrprime=1; // il includ pe 2
for(i=3;i<=limit;i+=2)
{
if(!V[i])
{
++nrprime;
ii=i<<1;
for(j=i*3;j<=limit;j+=ii) V[j]=true;
}
}
return nrprime;
}
int main()
{
FILE *in=fopen("ciur.in","rt"),*out=fopen("ciur.out","wt");
int n;
fscanf(in,"%d",&n);
fclose(in);
fprintf(out,"%d\n",ciur(n));
fclose(out);
}