Cod sursa(job #1231227)

Utilizator PTAdrian64Pop-Tifrea Adrian PTAdrian64 Data 19 septembrie 2014 22:55:18
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include <cstdio>
//#define lnln long long
#define max_n 100000000/2/8+1
//#include <cmath>

using namespace std;

int n,res=1;
char a[max_n];

void eratosthenes(){
     int i,j;
  for(i=1;((i*i)<<1)+(i<<1)<=n;i++)
      if(!(a[i>>3]&(1<<(i&7))))
         for(j=((i*i)<<1)+(i<<1);(j<<1)+1<=n;j+= (i<<1)+1)
                a[j>> 3]|=(1 << (j & 7));
    for(i=1;(i << 1) + 1<= n;i++)
        if(!(a[i >> 3] & (1 << (i & 7))))     
              res++;
}

int main(void){
   freopen("ciur.in","r",stdin);
   freopen("ciur.out","w",stdout);
   scanf("%d",&n);
   eratosthenes();
printf("%d",res);
}