Pagini recente » Cod sursa (job #410123) | Cod sursa (job #1313853) | Cod sursa (job #2790093) | Cod sursa (job #711259) | Cod sursa (job #2920856)
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
const int NMAX=1000001;
bool ciur[NMAX];
int prim[80000];
int k;
void calcul(long long x)
{
long long nr_div=1;
long long suma=1;
int i=1;
long long cx=x;
while(i<=k && prim[i]*prim[i]<=cx)
{
int nr=0;
if(x%prim[i]==0)
{
nr=0;
long long d=prim[i];
while(x%prim[i]==0)
{
x/=prim[i];
nr++;
}
nr_div*=(nr+1);
suma*=((pow(d,nr+1)-1)/(d-1));
suma=suma%9973;
}
i++;
}
if(x>1)
{
nr_div*=2;
suma*=(pow(x,2)-1)/(x-1);
suma=suma%9973;
}
printf("%lld %lld\n",nr_div,suma);
}
int main()
{
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
ciur[0]=ciur[1]=1;
for(int i=3; i<=1000; i+=2)
{
if(ciur[i]==0)
{
for(int j=2*i; j<=1000000; j=j+i)
ciur[j]=1;
}
}
k=1;
prim[1]=2;
for(int i=3; i<=1000000; i+=2)
if(ciur[i]==0)
{
prim[++k]=i;
}
int t;
long long n;
scanf("%d",&t);
for(int i=1; i<=t; i++)
{
scanf("%lld",&n);
calcul(n);
}
return 0;
}