Cod sursa(job #1097190)

Utilizator Dddarius95Darius-Florentin Neatu Dddarius95 Data 3 februarie 2014 10:25:28
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <cstdio>
#include <bitset>
#define Nmax 2000099
#define Pmax 200000
using namespace std;

int N,P[Pmax];
bitset < Nmax > v;


void Ciur(int N)
{
    int i;
    P[++P[0]]=2;
    for(i=3;i*i<=N;i+=2)
          if(!v[i])
          {
               P[++P[0]]=i;
               if(1LL*i*i<=1LL*N)
                    for(int j=i*i;j<=N;j+=2*i)
                         if(!v[j])v[j]=1;
          }
     for(; i<=N ; i+=2)
          if(!v[i])v[i]=1,P[++P[0]]=i;;
}
int main()
{
    freopen("ciur.in", "rt", stdin);
    freopen("ciur.out", "wt", stdout);
    scanf("%d",&N);
    Ciur(N);
    printf("%d\n",P[0]);
    return 0;
}