Cod sursa(job #956813)

Utilizator cousin.batmanVaru Batman cousin.batman 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;
}