Cod sursa(job #2354452)

Utilizator PopaAlbertPopa Albert-Ioan PopaAlbert Data 25 februarie 2019 12:24:13
Problema Suma si numarul divizorilor Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include<fstream>
#define N 45000
using namespace std;
ifstream f("maxd.in");
ofstream g("maxd.out");
bool c[45000];
long long prim[45000],np,i,nrdmax,cnt,d,a,b,minim;

void ciur()
{
    int i ,j;
    for(i=2;i*i<N;i++)
        if(!c[i])
            for(j=i*i;j<N;j+=i)
            c[j]=true;
    for(i=2;i<N;i++)
        if(c[i]==0)
            {
            ++np;
            prim[np]=i;
        }
}
long long nrdiv(long long n)
{
    int i,k,nr=1;
    for(i=1;prim[i]*prim[i]<=n;i++)
    {

        k=0;
        while(n%prim[i]==0)
        {
            k++;
            n=n/prim[i];
        }

        nr=nr*(k+1);
    }
    if(n!=1)
        nr=nr*2;
    return nr;
}
int main()
{
ciur();
    f>>a>>b;

for(i=a;i<=b;i++)
{
    d=nrdiv(i);

    if(d>minim)
    {
        minim=d;
        nrdmax=i;
        cnt=1;
    }
    else
        if(minim==d)
          cnt++;
}
g<<nrdmax<<" "<<minim<<" "<<cnt;

}