Pagini recente » Cod sursa (job #3264550) | Cod sursa (job #1145347) | Cod sursa (job #1437290) | Cod sursa (job #1345050) | Cod sursa (job #536176)
Cod sursa(job #536176)
#include<stdio.h>
#define MAX 1000000
int nr,cr[1000001],prm[1000001];
void Ciur()
{
int i,j;
for(i=2;i<=MAX;++i)
if(!cr[i])
for(j=i+i;j<=MAX;j+=i)
cr[j]=1;
for(i=2;i<=MAX;++i)
if(!cr[i])
prm[nr++]=i;
}
int nrf,f[1000001],pwr[1000001],bff[1000000];
void Decompose(long long n)
{
nrf=0;
int i=0;
pwr[0]=0;
bff[0]=0;
bool enter;
for(i=0;i<nr;++i)
{
enter=0;
while(!(n%prm[i]))
{
if(!pwr[nrf])
{
f[nrf]=prm[i];
bff[nrf]=prm[i];
}
else
bff[nrf]*=prm[i];
pwr[nrf]++;
n/=prm[i];
enter=1;
}
if(enter)
++nrf;
}
if(n>1)
{
f[nrf]=n;
pwr[nrf++]=1;
}
}
int main()
{
int t;
long long n;
Ciur();
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
scanf("%lld",&t);
int i,j,nrd;
long long sum;
while(t)
{
scanf("%lld",&n);
Decompose(n);
nrd=1;
sum=1;
for(i=0;i<nrf;++i)
{
nrd*=(pwr[i]+1);
sum*=(bff[i]*f[i]-1)/(f[i]-1);
sum%=9973;
}
printf("%d %lld\n",nrd,sum);
--t;
}
}