Cod sursa(job #485459)

Utilizator ovidiu.porumbOvidiu Porumb ovidiu.porumb Data 18 septembrie 2010 13:35:05
Problema Ciurul lui Eratosthenes Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include <fstream>
#include <math.h>


int numere[100000];

using namespace std;


void ciur_eratostene(int n)
{
    int i,j, q;

    q=sqrt(n);

    for(i=2; i<=3; i++)
      for(j=i; j<=n/2; j++)
        numere[j*i]=1;

    for(i=5; i<=q; i=(i << 1)+1)
      for(j=i; j<=q; j=(j << 1)+1)
        numere[j*i]=1;


    return;
}


int main(void)
{
    ifstream fin("ciur.in");
    ofstream fout("ciur.out");

    int n, i, k=0;

    fin>>n;
    ciur_eratostene(n);

    for(i=2; i<=n; i++)
      if( !numere[i])
        k++;

    fout<<k<<'\n';

    return 0;
}