Cod sursa(job #572510)

Utilizator bogfodorBogdan Fodor bogfodor Data 5 aprilie 2011 12:58:17
Problema Ciurul lui Eratosthenes Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include <cstdio>
#define Nmax 2000005

using namespace std;

int e[Nmax],n,nr;

FILE *fin=freopen("ciur.in","r",stdin);
FILE *fout=freopen("ciur.out","w",stdout);

void eratostene()
{
    e[1]=-1;
    for(int i=4;i<=n;i+=2)
        e[i]=-1;
    int k=3;
    for(int i=2*k;k<=n;i+=k){
        if(i>=n)
        {
            k+=2;
            i=k;
        }
        else
            e[i]=-1;
    }
}

void afisare()
{
    for(int i=2;i<=n;i++)
        if(e[i]!=-1)
            nr++;
    printf("%d\n",nr);
}

int main()
{
    scanf("%d", &n);
    eratostene();
    afisare();
    return 0;
}