Cod sursa(job #956813)
| Utilizator | Data | 3 iunie 2013 21:59:05 | |
|---|---|---|---|
| Problema | Ciurul lui Eratosthenes | Scor | 100 |
| Compilator | c | Status | done |
| Runda | Arhiva educationala | Marime | 0.48 kb |
#include<string.h>
#include<stdio.h>
int main(){
int n, count, i, j;
freopen("ciur.in", "rt", stdin);
freopen("ciur.out", "wt", stdout);
scanf("%d", &n);
unsigned char v[n/8+1];
memset(v, 0, n/8+1);
count = 0;
for(i=2; i<=n; i++){
if(v[i/8] & 1<<(i%8))
continue;
count++;
for(j=2*i; j<=n; j+=i)
v[j/8]|=1<<(j%8);
}
printf("%d\n", count);
fclose(stdin);
fclose(stdout);
return 0;
}
