Cod sursa(job #223716)
#include <stdio.h>
#define T 45000
int pr[45000],k=0;
void ciur()
{
int i,j;
bool c[T]={false};
for (i=2; i*i<T; i++)
{
if (!c[i])
for (j=i*i; j<T; j+=i)
c[j]=true;
}
for (i=2; i<T; ++i)
if (!c[i])
pr[++k]=i;
}
int div(int n)
{
int nrd=1,p,i;
for (i=1 ; pr[i]*pr[i]<=n ; ++i)
if (n%pr[i]==0)
{
p=0;
while (n%pr[i]==0)
{
++p;
n/=pr[i];
}
nrd*=p+1;
}
if(n!=1)
nrd<<=1;
return nrd;
}
int main()
{
freopen("maxd.in","r",stdin);
freopen("maxd.out","w",stdout);
int rez,a,b,maxdiv=0,i,nrmax=0,gasit;
scanf("%d%d",&a,&b);
ciur();
for (i=a; i<=b; i++)
{
rez=div(i);
if(rez==maxdiv)
++nrmax;
if (rez>maxdiv)
{
maxdiv=rez;
nrmax=1;
gasit=i;
}
}
printf("%d %d %d",gasit,maxdiv,nrmax);
return 0;
}