Pagini recente » Cod sursa (job #1907401) | Cod sursa (job #1538249) | Cod sursa (job #1129615) | Cod sursa (job #1630653) | Cod sursa (job #1160637)
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#define MOD 9973
#include <bitset>
using namespace std;
int t, a, nq, nr[10000], sum;
bool prim[1000050];
void ciur()
{
nr[nq++] = 2;
for(int d=3; d<=1000; d+=2)
if(prim[d]==0)
for(long long i=d*d; i<=1000001; i+=2*d)
prim[i] = 1;
for(int d=3; d<=1000000; d+=2)
if(prim[d]==0)
nr[nq++] = d;
}
int putere(int x, int y)
{
int n=x;
int rez=1;
for(int i=0; 1<<i<=y; i++){
if((1<<i) & y){
rez*=n;
}
n = n*n;
}
return rez;
}
void diviz(int a)
{
sum=1;
int nrd=1, d, e;
long long var;
for(int i=0; nr[i]*nr[i]<=a; i++){
d = nr[i];
e = 0;
while(a%d==0){
a/=d;
e++;
}
if(e){
nrd *= (e+1);
var = pow((double)d, (double)(e+1));//((putere(d, e+1)-1)/(d-1))%9973;
sum*=((var-1)/(d-1))%MOD;
sum%=MOD;
}
}
if(a!=1){
nrd *= 2;
sum*= ((a*a-1)/(a-1))%MOD;
sum%=MOD;
}
//cerr << suma << "\n";
printf("%d %d\n", nrd, sum);
}
int main()
{
freopen("ssnd.in", "r", stdin);
freopen("ssnd.out", "w", stdout);
scanf("%d", &t);
ciur();
for(int i=0; i<t; i++){
scanf("%d ", &a);
diviz(a);
}
return 0;
}