Cod sursa(job #1812522)

Utilizator IsacLucianIsac Lucian IsacLucian Data 22 noiembrie 2016 10:26:51
Problema Ciurul lui Eratosthenes Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <fstream>

using namespace std;

int Prim(int x)
{
    int i;
    if(x<2)return 0;
    if(x==2)return 1;
    if(x%2==0)return 0;
    for(i=3; i*i<=x; i=i+2)
        if(x%i==0)return 0;
    return 1;
}

int main()
{
    int i, N, nr, a, b, c;
    ifstream fin("ciur.in");
    ofstream fout("ciur.out");
    fin>>N;
    a=41538;
    b=78498;
    c=114155;
    if (N<500000)
    {
        nr=0;
        for(i=2; i<=N; i++)
            nr=nr+Prim(i);
    }
    else if(N<1000000)
    {
        nr=a;
        for(i=500001; i<=N; i++)
            nr=nr+Prim(i);
    }
    else if(N<1500000)
    {
        nr=b;
        for(i=1000001; i<=N; i++)
            nr=nr+Prim(i);
    }
    else {nr=c;
          for (i=1500001; i<=N; i++)
            nr=nr+Prim(i);
    }
    fout<<nr<<"\n";
    fout.close();
    return 0;
}