Pagini recente » Cod sursa (job #2423594) | Cod sursa (job #2091482) | Cod sursa (job #2575220) | Cod sursa (job #891086) | Cod sursa (job #1140276)
#include<fstream>
#include<cmath>
#define MOD 9973
#define maxim 1000005
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
bool viz[maxim];
int v[80000];
int k,n,i,e1,e2,nrdiv=1,sumdiv=1,nrprime;
void ciur()
{
nrprime=0;
int i,j;
for(i=2;i<=maxim;i++)
if(viz[i]==0)
{v[++nrprime]=i;
for(j=i+i;j<=maxim;j+=i)
viz[j]=1;
}
}
int exp(int &a,int b)
{
int nr=0;
while(a%b==0)
{
a/=b;
nr++;
}
return nr;
}
int putere(int a,int k)
{int aux,sol;
aux=a;
sol=1;
while(k)
{
if(k%2==1)sol=(sol*aux)%MOD;
aux=(aux*aux)%MOD;k/=2;
}
return sol%MOD;
}
void calculeaza(int a)
{
nrdiv=1;sumdiv=1;
for(k=1;k<=nrprime&&v[k]*v[k]<=a;k++)
if(a%v[k]==0)
{
e1=exp(a,v[k]);
nrdiv*=(e1+1);
sumdiv*=(((putere(v[k],(e1+1))-1))%MOD)/(v[k]-1)%MOD;
}
if(a>1)nrdiv*=2,sumdiv*=(a+1);
g<<nrdiv<<" "<<sumdiv%MOD<<'\n';
}
int main()
{
int a;
ciur();
f>>n;
for(i=1;i<=n;i++)
{
f>>a;
calculeaza(a);
}
g<<'\n';
return 0;
}