Cod sursa(job #559775)

Utilizator laurionLaurentiu Ion laurion Data 18 martie 2011 02:07:23
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.53 kb
#include<fstream>
#include<bitset>
std::bitset<2000005> ciur;
int main()
{
    std::ifstream fin("ciur.in");
    std::ofstream fout("ciur.out");

    int n;
    register int i,j;
    fin>>n;
    register int nr=n-1;

    for(i=4;i<=n;i+=2)
    {
        ciur[i]=1;
        --nr;
    }
    for(i=3;i*i<=n;i+=2)
    {
        if(ciur[i]==0)//e prim
        {
            for(j=i*i;j<=n;j+=i+i)
            {
                if(ciur[j]==0)
                    ciur[j]=1,--nr;
            }
        }
    }

    fout<<nr<<'\n';
    return 0;
}