Cod sursa(job #617934)

Utilizator irene_mFMI Irina Iancu irene_m Data 15 octombrie 2011 12:25:18
Problema Suma si numarul divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.16 kb
#include <cstdio>
#include <vector>
#define MaxN 1000005
#define infile "magicnum.in"
#define outfile "magicnum.out"

using namespace std;

vector <int> prim;

int X,Y,nrSol;
bool ciur[MaxN];

void read()
{
    freopen(infile,"r",stdin);
    scanf("%d%d",&X,&Y);
    fclose(stdin);
}

void prime()
{
      int i,j;
      ciur[1]=true;
      for(i=2;i*i<=Y;i++)
            if(ciur[i]==false)
                  for(j=2;j*i<=Y;j++)
                              ciur[i*j]=true;

      for(i=2;i<=Y;i++)
            if(!ciur[i])
                prim.push_back(i);
}

int numara(int x)
{
    int i=0,nr=1,d,j;

    while(x>1)
    {
        d=0; j=prim[i];
        while(x%j==0 && x>0)
        {
            x/=j;
            d++;
        }

        nr*=(d+1);
        i++;
    }

    return nr;
}

void solve()
{
    int i,nr;

    for(i=X;i<=Y;i++)
    {
        nr=numara(i);
        if(i%nr==0)
            nrSol++;
    }
}

void write()
{
    freopen(outfile,"w",stdout);
    printf("%d\n",nrSol);
    fclose(stdout);
}

int main()
{
    read();
    prime();
    solve();
    write();

    return 0;
}