Cod sursa(job #615096)

Utilizator theodora_maneaManea Theodora Maria theodora_manea Data 8 octombrie 2011 16:18:17
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include <fstream>
#include <bitset>

#define max_n 2000002

using namespace std;

int n,m,i,j;
bitset <max_n> p;

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

void ciur() {
   for (i=1; ((i*i)<<1) + (i<<1) <=n; ++i) {
       if (!p.test(i))
       {
           j=((i*i)<<1) + (i<<1);
           while ((j<<1)+1<=n)
           {
               p.set(j,1);
               j+=(i<<1)+1;
           }
       }
   }
}

int main () {
   in >> n;
   p.reset();
   p.set(0,1);
   ciur();
   int nr=0;
   for (i=1; (i<<1)+1<=n; ++i)
       if (!p.test(i)) nr++;
   out << nr+1 << '\n';
   return 0;
}