Mai intai trebuie sa te autentifici.
Cod sursa(job #791996)
| Utilizator | Data | 26 septembrie 2012 01:49:25 | |
|---|---|---|---|
| Problema | Ciurul lui Eratosthenes | Scor | 100 |
| Compilator | c | Status | done |
| Runda | Arhiva educationala | Marime | 0.52 kb |
#include <stdio.h>
char prime[125009];
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>>3] & (1 << (i & 7))) == 0)
for(j = ((i*i) << 1) + (i << 1); (j << 1) + 1 <= n; j += (i << 1) + 1)
prime[j>>3] |= (1 << (j & 7));
for(i = 1; i < (n >> 1); i++)
if((prime[i>>3] & (1 << (i & 7))) == 0)
nr++;
fprintf(out, "%d\n", nr);
fclose(in);
fclose(out);
return 0;
}
