Cod sursa(job #1122983)

Utilizator OnimushaLordTiberiu Copaciu OnimushaLord Data 25 februarie 2014 21:43:06
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
# include <fstream>
# define N 500000

using namespace std;

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

int p[N],n;

int ciur()
{
    int i, j, nr = 1;
    for (i = 1; ((i * i) << 1) + (i << 1) <= n; i += 1)
    {
        if ((p[i >> 3] & (1 << (i & 7))) == 0)
        {
            for (j = ((i * i) << 1) + (i << 1); (j << 1) + 1 <= n; j += (i << 1) + 1)
            {
                p[j >> 3] |= (1 << (j & 7));
            }
        }
    }
    for (i = 1; 2 * i + 1 <= n; ++i)
        if ((p[i >> 3] & (1 << (i & 7))) == 0)
            nr++;
    return nr;
}

int main()
{
    f>>n;
    g<<ciur();
}