Cod sursa(job #763622)
| Utilizator | Data | 2 iulie 2012 18:33:33 | |
|---|---|---|---|
| Problema | Ciurul lui Eratosthenes | Scor | 100 |
| Compilator | c | Status | done |
| Runda | Arhiva educationala | Marime | 0.46 kb |
#include <stdio.h>
char prime[1000009];
int i, j, nr, n;
int main()
{
FILE *in = fopen("ciur.in", "r");
FILE *out = fopen("ciur.out", "w");
fscanf(in, "%d", &n);
nr = 1;
for(i = 1; ((i*i) << 2) + (i << 2) + 1 <= n; ++i)
if(prime[i] == 0)
for(j = ((i*i) << 1) + (i << 1); (j << 1) + 1 <= n; j += (i << 1) + 1)
prime[j] = 1;
for(i = 1; i < (n >> 1); i++)
if(prime[i] == 0)
nr++;
fprintf(out, "%d\n", nr);
fclose(in);
fclose(out);
return 0;
}
