Cod sursa(job #1803560)

Utilizator rangalIstrate Sebastian rangal Data 11 noiembrie 2016 16:32:41
Problema Ciurul lui Eratosthenes Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include <fstream>
#include <bitset>
#define N 2000002
#define infile "ciur.in"
#define outfile "ciur.out"

using namespace std;

ifstream fin(infile);
ofstream fout(outfile);

bitset<N> v;
// 0 = prim, 1 != prim

int n,i;

void Ciur(int n)
{
    v[0]=v[1]=1;
    for(i=4; i<=n; i+=2)
        v[i]=1;
    for(i=3; i<=n; i+=2)
        if(!v[i])
            for(int k=i*i; k<=n; k+=2*i)
                v[k]=1;
}

int main()
{
    fin>>n;
    Ciur(n);

    int ct=0;
    for(i=1; i<=n; ++i)
        if(!v[i]) ++ct;
    fout<<ct<<"\n";

    fin.close(); fout.close();
    return 0;
}