Pagini recente » Cod sursa (job #1018494) | Cod sursa (job #1614195) | Cod sursa (job #1567801) | Cod sursa (job #2917290) | Cod sursa (job #428386)
Cod sursa(job #428386)
#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()
{
long long i,j;
for(i=2;i<=Ld;i++)
if(!ciur[i])
{
prim[++P]=i;
for(j=i*i;j<=Ld;j+=(i<<1))
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=1;
// a=x; S=1;
while(n%x==0)
{
exp++;
//S=(S+a)%MOD;
//a=(a*x)%MOD;
n/=x;
}
Nr*=exp;
//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;
}