Cod sursa(job #711889)

Utilizator SpiriFlaviuBerbecariu Flaviu SpiriFlaviu Data 12 martie 2012 20:52:19
Problema Ciurul lui Eratosthenes Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <fstream>
#include <bitset>
#include <cmath>
using namespace std;
bitset <2000002> bit1;
bitset <2000002> bit2;
ifstream fin("ciur.in");
ofstream fout("ciur.out");

bool prim(long x)
{
    int div;
    if(x%2==0)
        return 0;
    for(div=3;div<=sqrt(x);div+=2)
        if(!x%div)
            return 0;
    return 1;
}

int main()
{
    int n,i,j;
    fin>>n;

    bit2.set();

    bit1[1]=0;
    bit1[2]=1;
    //1 prim
    // 0 marcat

    for(i=3;i<=n;i++)
        if(bit2[i]==1 && prim(i))
        {
            bit1[i]=1;
            for(j=2;j*i<=n+1;j++)
                bit2[i*j]=0;
        }

        fout<<bit1.count();



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