Pagini recente » Cod sursa (job #1059972) | Cod sursa (job #1672921) | Cod sursa (job #2102013) | Cod sursa (job #1940654) | Cod sursa (job #1184535)
#include <cstdio>
using namespace std;
#define MAX 1000000
#define RMAX 1000
#define MOD 9973
int v[MAX], t, n, np, nd;
char vc[MAX];
long long s, x, flad, fact;
void ciur();
int main()
{
int i, p;
freopen("ssnd.in", "r", stdin);
freopen("ssnd.out", "w", stdout);
scanf("%d", &t);
ciur();
while(t--){
scanf("%lld", &x);
s = 1; nd = 1;
for(i=1; x>1; i++){
if(v[i]*v[i]>x){
nd *= 2;
s = s*(x+1)%MOD;
x = 1;
}
if(x%v[i]) continue;
p = 0; flad = v[i], fact = 1;
while(x%flad==0){
p++;
fact += flad;
flad = flad*v[i];
}
if(flad!=v[i])
x = x/(flad/v[i]);
nd *= (p+1);
s = (s*fact)%MOD;
}
printf("%d %lld\n", nd, s);
}
return 0;
}
void ciur(){
int i, j;
v[++np] = 2;
for(i=3; i<RMAX; i=i+2)
if(!vc[i]){
for(j=i*i; j<MAX; j=j+i+i)
vc[j] = 1;
v[++np] = i;
}
for(i=RMAX+1; i<MAX; i=i+2)
if(!vc[i])
v[++np] = i;
v[np+1] = MAX+1;
}