Cod sursa(job #1812531)

Utilizator bananamandaoneTudor Cosmin Oanea bananamandaone Data 22 noiembrie 2016 10:29:31
Problema Ciurul lui Eratosthenes Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include <fstream>

using namespace std;

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

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