Cod sursa(job #273437)
Utilizator | barda liviu alexandru bardaliviu | Data | 8 martie 2009 16:13:03 |
---|---|---|---|
Problema | Ciurul lui Eratosthenes | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.73 kb |
#include <stdio.h>
FILE *in, *out;
bool sir[1000001];
int main ()
{
int n, i, j, np=1;
in=fopen("ciur.in", "r");
out=fopen("ciur.out", "w");
fscanf(in, "%d", &n);
for(j=3; j<=n; j+=2)
sir[(j-1)/2]=j;
for(i=3; i<=n; i+=2)
{
if(sir[(i-1)/2])
{
np++;
for(j=(i-1)/2+i; j<=n/2; j+=i)
sir[j]=0;
}
}
if(n==2)
fprintf(out, "%d", 1);
if(n==3)
fprintf(out, "%d", 2);
if(n>3)
fprintf(out, "%d", np);
fclose(in);
fclose(out);
return 0;
}