Pagini recente » Cod sursa (job #2011115) | Cod sursa (job #1828098) | Cod sursa (job #966612) | Cod sursa (job #1651884) | Cod sursa (job #406949)
Cod sursa(job #406949)
#include<stdio.h>
#include<string.h>
#define Ld 1000000
#define MOD 9973
#define divizori 80000
using namespace std;
int t,T,i,n,prim[divizori],ciur[Ld+1],P,exp,Nr,x;
long long Sum,a,S;
void precalc()
{
int i,j;
for(i=2;i<=Ld;i++)
if(!ciur[i])
{
prim[++P]=i;
for(j=i+i;j<=Ld;j+=i)
ciur[j]=1;
}
}
/*int lgput (int a, int b)
{
int S;
a%=MOD;
for(S=1;b;a=(a*a)%MOD,b>>=1)
if(b&1) S=(S*a)%MOD;
return S;
}
*/
int main()
{
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
scanf("%d",&T);
precalc();
for(t=1;t<=T;t++)
{
scanf("%d",&n);
Nr=Sum=1;
for(i=1; prim[i] * prim[i] <= n; i++)
if(n%prim[i]==0)
{
x=prim[i];
exp=0; a=x; S=1;
while(n%x==0)
{
exp++;
S=(S+a)%MOD;
a=(a*x)%MOD;
n/=x;
}
Nr*=(exp+1);
Sum=(Sum*S)%MOD;
//Sum=(Sum*(lgput(x,exp)-1)/(x-1))%MOD;
}
if(n!=1) //{ Nr<<=1; Sum=(Sum*(lgput(n,2)-1)/(n-1))%MOD; }
{
Nr<<=1;
Sum=( Sum * (n*n-1)/(n-1) ) %MOD;
}
printf("%d %lld\n",Nr,Sum);
}
return 0;
}