Cod sursa(job #654032)

Utilizator sternvladStern Vlad sternvlad Data 29 decembrie 2011 13:40:52
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.57 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream in("ciur.in");
ofstream out ("ciur.out");
const int N=10000000/2/8+1;

int p[N];

int main()
{
    int i,j,nr=1,n;
    in>>n;
    for (i=1;((i*i)<<1)+(i<<1) <=n; i+=1)
        {
            if ((p[i>>3]&(1<<(i&7)))==0)
                {
                    for (j=((i*i)<<1)+(i<<1);(j<<1)+1<=n;j+=(i<<1)+1)
                        p[j>>3]|=(1<<(j&7));
                }

         }
    for (i=1;2*i+1<=n;i++)
        if((p[i>>3]&(1<<(i&7)))==0)
        nr++;
        out<<nr;
 }