Cod sursa(job #680882)

Utilizator alexarnautuArnautu Alexandru alexarnautu Data 16 februarie 2012 07:15:45
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <cstdio>
#include <bitset>
#include <cmath>

using namespace std;

FILE * iFile;
FILE * oFile;

long n, i, j, count=1;
bitset<20000000> nums;

void read()
{
    fscanf(iFile, "%ld", &n);
}

void reduce()
{
    for(i=2;i<=sqrt(n);i++)
    {
        if(nums[i] == 0)
        {
            for(j=i+i;j<=n;j=j+i)
            {
                nums[j] = 1;
            }
        }

    }
}

void show()
{
    for(i=3;i<=n;i=i+2)
    {
        if(nums[i] == 0)
            count++;

    }
    fprintf(oFile, "%ld", count);
}

int main()
{
    iFile = fopen("ciur.in", "r");
    oFile = fopen("ciur.out", "w");

    read();
    reduce();
    show();

    fclose(iFile);
    fclose(oFile);

    return 0;
}