Cod sursa(job #653330)

Utilizator palcuiealexAlex Palcuie palcuiealex Data 27 decembrie 2011 19:37:57
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.12 kb
/***************************************************
 * Author: Alexandru Palcuie
 * Country: Romania
 * Email: alex [dot] palcuie [at] gmail [dot] com
 * Website: http://palcu.blogspot.com/
 * Year: 2011
****************************************************/

#include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <stack>
#include <queue>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <cstring>

using namespace std;

//Constants
const int N = 1000005;

//Structs

//Global Vars
bitset<N> v;

//Solve Functions

int main(){
    #ifndef ONLINE_JUDGE
    freopen("ciur.in","r",stdin);
    freopen("ciur.out","w",stdout);
    #endif

    int n; cin >> n;
    int sol = 1;

    for(int i=1; i*(i+1)*2<=n; i++)
        if(!v[i])
            for(int j=i*(i+1)*2; 2*j+1<=n; j+=2*i+1)
                v[j]=1;
    for(int i=1; 2*i+1 <= n; i++)
        if(!v[i])
            sol++;

    printf("%d\n",sol);

    return 0;
}