Cod sursa(job #1761398)

Utilizator Joystick6208Catalin Topala Joystick6208 Data 22 septembrie 2016 09:45:02
Problema Ciurul lui Eratosthenes Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include <cstdio>
using namespace std;

char p[2000000];

int ciur(int n)
{
    int nr = 0;

    for(int i = 0; i < 2000000; ++i)
        p[i] = 1;

    for (int i = 1; ((i * i) << 1) + (i << 1) <= n; ++i)
        if (p[i])
            for (int j = ((i * i) << 1) + (i << 1); (j << 1) + 1 <= n; j += (i << 1) + 1)
                p[j] = 1;

    for(int i = 1; (i << 1) + 1 <= n; ++i)
        if(p[i])
            nr++;

    return nr;
}

int main()
{

    int n;

    freopen("ciur.in", "r", stdin);
    freopen("ciur.out", "w", stdout);

    scanf("%d", &n);
    printf("%d\n", ciur(n));

}