Pagini recente » Cod sursa (job #1747769) | Cod sursa (job #752307) | Cod sursa (job #3191546) | Cod sursa (job #2453958) | Cod sursa (job #1340418)
#include <cstdio>
#define prim 9973
#define MAXN 1000000
#define LL long long int
using namespace std;
int T,K,p[100000]; bool v[MAXN+10];
void sieve(){
int i,j;
p[++K]=2;
for (i=3; i<=MAXN; i+=2)
if (!v[i]){
p[++K]=i;
for (j=2*i; j<=MAXN; j+=i)
v[j]=1;
}
}
int fpow(int x, int p){
int res=1;
while (p){
if (p&1)
res=(res*x)%prim;
x=(x*x)%prim;
p>>=1;
}
return res;
}
int main(){
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
scanf("%d",&T);
sieve();
int i,cnt,sum,pt; LL N;
while (T--){
scanf("%lld",&N);
if (N==1){
printf("1 1\n");
continue;
}
cnt=sum=1;
for (i=1; i<=K && N!=1; i++)
if (N%p[i]==0){
pt=0;
while (N%p[i]==0) N/=p[i],pt++;
cnt*=(pt+1);
sum=(sum*(fpow(p[i]%prim,pt+1)-1))%prim;
sum=(sum*fpow((p[i]-1)%prim,prim-2))%prim;
}
if (N!=1){
cnt*=2;
sum=(sum*(N+1))%prim;
}
printf("%d %d\n",cnt,sum);
}
return 0;
}