Cod sursa(job #1242976)

Utilizator deresurobertoFMI - Deresu Roberto deresuroberto Data 15 octombrie 2014 13:12:19
Problema Ciurul lui Eratosthenes Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.56 kb
#include<fstream>
#define nx 2000007
using namespace std;
int n,i,j;
char bit[nx/8+1];

bool verify(int poz)
{
    if(bit[poz<<3] & (1<<(poz&7)))return 1;
    return 0;
}

void modify(int poz)
{
    bit[poz<<3]|=(1<<(poz&7));
}

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

int main()
{
    fin>>n;

    fout<<"2 ";
    for(i=3;i<=n;i+=2)
    {
        if(!verify(i))
        {
            fout<<i<<" ";

            if(1LL*i*i<=1LL*n)
            for(j=i*i;j<=n;j+=i)
                modify(j);
        }
    }
    return 0;
}