Cod sursa(job #620540)

Utilizator ada_sAda-Mihaela Solcan ada_s Data 16 octombrie 2011 14:53:03
Problema Suma si numarul divizorilor Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>
using namespace std;

const int NMAX = 1000005;
const int MOD = 9973;

int prime[NMAX];
bool viz[NMAX];

ifstream fin("ssnd.in");
ofstream fout("ssnd.out");

void ciur();

int main()
{
	long long n, p, t, d, sd, q, i;
	ciur();
	fin>>t;
	while (t--)
	{
		fin>>n;
		i=1;
		d=1;
		sd=1;/////
		for (i=1; prime[i]*prime[i]<=n; i++)
			if (n%prime[i]==0)
			{
				for (p=0, q=prime[i]; n%prime[i]==0; n/=prime[i], p++, q*=prime[i]);
				d*=p+1;
				sd=sd*(q-1)/(prime[i]-1)%MOD;////
			}//if
		if (n>1)
		{
			d*=2;
			sd = (sd*(n+1) % MOD);
		}//if
		fout<<d<<" "<<sd<<"\n";
	}
	return 0;
}
void ciur()
{
	viz[0]=viz[1]=true;
	for (int i=2;i*i<NMAX;i++)
		if (!viz[i])
			for (int j=i*i;j<NMAX;j+=i)
				viz[j]=true;
	for (int i=2;i<NMAX;i++)
		if (!viz[i])
			prime[++prime[0]]=i;
}