Cod sursa(job #1596974)

Utilizator razvandRazvan Dumitru razvand Data 11 februarie 2016 15:58:03
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <iostream>
#include <fstream>
#include <bitset>
#include <stdio.h>
#include <cmath>
#define MAX 2000003
#define MAX2 46340

using namespace std;

ifstream in("ciur.in");
ofstream out("ciur.out");

bitset<MAX> v;

int n,k;

int main() {

    in >> n;
    int sq = sqrt(n);

    for(int i = 2; i <= n; i += 2)
        v[i] = 1;
    for(int i = 3; i <= n; i += 2) {

        if(v[i] == 0) {

            k++;

            if(i > sq)
                continue;

            for(int mult = i*i; mult <= n; mult += i) {

                v[mult] = 1;

            }

        }

    }

    out << k+1;

    return 0;

}