Cod sursa(job #1042720)

Utilizator Nicusor002Telechi Nicolae Nicusor002 Data 27 noiembrie 2013 17:07:05
Problema Ciurul lui Eratosthenes Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.54 kb
#include<stdio.h>
#include<math.h>
char ciur[((2000000>>3)+2)];

int eratostenes(int n){
    int i,j;
    int prime=n;
    for(i=2;i*i<=n;i++){
        if(ciur[i>>3]&(1<<i&7))
            continue;
        for(j=i*i;j<=n;j+=i){
            if(!(ciur[j>>3]&(1<<j&7)))
                prime--;
            ciur[j>>3]|=(1<<j&7);
        }
    }
    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;
}