Cod sursa(job #818841)

Utilizator SteveStefan Eniceicu Steve Data 18 noiembrie 2012 09:26:22
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
#include <set>
#include <map>
#include <cmath>
#include <iomanip>
#include <string>
#include <cstring>
#include <deque>
#include <stack>
#include <bitset>
#include <list>
#define pb push_back
#define pf push_front
#define pob pop_back
#define pof pop_front
#define mp(a,b) make_pair (a, b)
#define ll long long
#define max(a, b) (a > b ? a : b)
#define min(a, b) (a < b ? a : b)

using namespace std;

bitset <2000001> ciur;

int main ()
{
    ifstream fin ("ciur.in");
    ofstream fout ("ciur.out");
    int N;
    fin >> N;
    fin.close ();
    ciur[0] = 1;
    ciur[1] = 1;
    for (int i = 3; i * i <= N; i += 2)
    {
        if (!ciur[i])
        {
            for (int j = i * i; j <= N; j += i)
                ciur[j] = 1;
        }
    }
    int cnt;
    if (N >= 2) cnt = 1;
    else cnt = 0;
    for (int i = 3; i <= N; i += 2)
        if (!ciur[i]) cnt++;
    fout << cnt;
    fout.close ();
    return 0;
}