Cod sursa(job #485456)

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


char 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] != '1')
        k++;

    fout<<k<<'\n';

    return 0;
}