Cod sursa(job #1028843)

Utilizator invincibleInvincibilul invincible Data 14 noiembrie 2013 19:06:18
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.56 kb
#include<cstdio>
#include<cmath>
#include<bitset>

using namespace std;

bitset<2000007> c;
int n;

inline int ciur(int n){
    int Nr = 1;
    int Lim = sqrt(n) + 1;
    for(int i = 4; i <= n; i += 2)
        c[i] = 1;
    for(int i = 3; i <= Lim; i += 2)
        if(c[i] == 0)
            for(int j = 2 * i; j <= n; j += i)
                c[j] = 1;
    for(int i = 3; i <= n; i += 2)
        Nr += (!c[i]);
    return Nr;
}

int main(){
    freopen("ciur.in", "r", stdin);
    freopen("ciur.out", "w", stdout);
    scanf("%d", &n);
    printf("%d", ciur(n));
    return 0;
}