Cod sursa(job #223716)

Utilizator cosmin79Carabet Cosmin Andrei cosmin79 Data 29 noiembrie 2008 09:52:26
Problema Sum Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#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;
}