Pagini recente » Cod sursa (job #2569748) | Cod sursa (job #1215352) | Cod sursa (job #1091718) | Cod sursa (job #2859175) | Cod sursa (job #1560967)
# include <cstdio>
# define N 1000010
# define P 100001
# define MOD 9973
using namespace std;
bool prim[N];
int ciur[P];
int n,x,putere,suma_divizorilor,numarul_divizorilor;
inline int pow(int a, int b)
{
int p=1;
while(b)
{
if(b%2==0) b/=2, a*=a;
else p*=a,b--;
}
return p;
}
void Ciur()
{
for(int i=2; i<N; ++i)
prim[i]=true;
for(int i=2; i<N; ++i)
if(prim[i]==true)
{
ciur[++ciur[0]]=i;
for(int j=i; j<N; j+=i)
prim[j]=false;
}
}
int main()
{
freopen("ssnd.in", "r", stdin);
freopen("ssnd.out", "w", stdout);
scanf("%d\n", &n);
Ciur();
for(int i=1; i<=n; ++i)
{
scanf("%d\n", &x);
suma_divizorilor=1;
numarul_divizorilor=1;
for(int j=1; j<=ciur[0] && ciur[j]*ciur[j]<=x; ++j)
if(x%ciur[j]==0)
{
putere=0;
while(x%ciur[j]==0)
{
putere++;
x/=ciur[j];
}
numarul_divizorilor*=(putere+1);
suma_divizorilor*=(pow(ciur[j],putere+1)-1);
suma_divizorilor/=(ciur[j]-1);
suma_divizorilor%=MOD;
if(x==1) break;
}
if(x!=1)
{
numarul_divizorilor*=2;
suma_divizorilor*=(x*x-1);
suma_divizorilor/=(x-1);
suma_divizorilor%=MOD;
}
printf("%d %d\n", numarul_divizorilor, suma_divizorilor);
}
}