Cod sursa(job #1242987)

Utilizator deresurobertoFMI - Deresu Roberto deresuroberto Data 15 octombrie 2014 13:26:30
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.56 kb
#include<fstream>
#define nx 2000007
using namespace std;
int n,i,j,sol;
char bit[nx/8+1];

bool verify(int pos)
{
    if(bit[pos>>3] & (1<<(pos&7)))return 1;
    return 0;
}

void modify(int pos)
{
    bit[pos>>3]|=(1<<(pos&7));
}

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

int main()
{
    fin>>n;

    sol=1;
    for(i=3;i<=n;i+=2)
    {
        if(!verify(i))
        {
            sol++;

            if(i<1414)
            for(j=i*i;j<=n;j+=i)
                modify(j);
        }
    }

    fout<<sol;
    return 0;
}