Cod sursa(job #1042710)

Utilizator Nicusor002Telechi Nicolae Nicusor002 Data 27 noiembrie 2013 16:56:44
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.53 kb
#include<stdio.h>
#include<math.h>
char ciur[((2000000/8)+2)];

int eratostenes(int n){
    int i,j;
    int prime=n;
    for(i=2;i<=sqrt(n);i++){
        while(ciur[i/8]&(1<<i%8)) i++;
        for(j=i*i;j<=n;j+=i){
            if(!(ciur[j/8]&(1<<j%8)))
                prime--;
            ciur[j/8]|=(1<<j%8);
        }
    }
    return --prime;
}

int main(){
    int n;
    freopen("ciur.in","r",stdin);
    freopen("ciur.out","w",stdout);

    scanf("%d",&n);

    printf("%d",eratostenes(n));
    return 0;
}