Cod sursa(job #632901)
Utilizator | Data | 12 noiembrie 2011 15:08:08 | |
---|---|---|---|
Problema | Ciurul lui Eratosthenes | Scor | 30 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.38 kb |
#include <stdio.h>
using namespace std;
FILE *f=fopen("ciur.in","r");
FILE *g=fopen("ciur.out","w");
int n,nr;
char prim[250000];
int main()
{
int j,m;
fscanf(f,"%d",&n);
for (m=2;m<=n;++m)
{
if((prim[m>>3] & (1<<(m&7)))==0)
{
++nr;
for (j=(m+m);j<=(n<<2);j+=m)
prim[j>>3]|=(1<<(j&7));
}
}
fprintf(g,"%d",nr);
return 0;
}