Cod sursa(job #890386)

Utilizator XeBluePodaru Mihai XeBlue Data 25 februarie 2013 00:47:31
Problema Suma si numarul divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include<fstream>
using namespace std;
ifstream in("ssnd.in");
ofstream out("ssnd.out");
int nrdiv(int nr)
{
	int p=0, div=1;
	while(nr%2==0)
	{
		p++;
		nr/=2;
	}
	div*=p+1;
	for(int i=3;i*i<=nr;i+=2)
	{
		p=0;
		while(nr%i==0)
		{
			p++;
			nr/=i;
		}
		nr*=p+1;
	}
	if(nr!=1)
		div*=2;
	return div;
}

int sumadiv(int nr)
{
	int p=1, suma=1, r=0;
	for( int i=2;i<=nr;i++)
	{
		p=1;
		while(nr%i==0)
		{
			p*=i;
			nr/=i;
		}
		suma*=(p*i-1)/(i-1);
	}
	return suma;
}
		
int main()
{
	long long n, i, nr;
	in >> n;
	for(i=1;i<=n;i++)
	{
		in >>nr;
		out << nrdiv(nr) << " ";
		out << sumadiv(nr) << "\n";
	}
	in.close();
	out.close();
	return 0;
}