Pagini recente » Cod sursa (job #2814560) | Cod sursa (job #1348058) | Cod sursa (job #2496776) | Cod sursa (job #963768) | Cod sursa (job #491141)
Cod sursa(job #491141)
#include<cstdio>
long long n;
int N=1000005,t,pr,p[1000005],m=9973,exp(int,int);
void read(),solve(),ciur();
int main()
{
read();
solve();
return 0;
}
void read()
{
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
scanf("%d",&t);
}
void solve()
{
int cnt,nd,sd,i;
ciur();
for(;t;t--)
{
scanf("%lld",&n);
for(nd=1,sd=1,i=1;i<=pr&&p[i]*p[i]<=n;i++)
{
if(n%p[i])continue;
for(cnt=0;n%p[i]==0;n/=p[i],++cnt);
nd*=(cnt+1);
sd =((((sd*exp(p[i],cnt+1)-1))%m)*exp(p[i]-1,m-2))%m;
}
if(n>1)
{
nd*=2;
sd=(sd*(n+1))%m;
}
printf("%d %d\n",nd,sd);
}
}
int exp(int b, int e){int ret=1;for(;e;e>>=1,b*=b,b%=m)if(e&1)ret*=b,ret%=m;return ret;}
void ciur()
{
int i, j;
for(i=2;i<1000;i++)
if(!p[i])
{
p[++pr]=i;
for(j=i*i;j<1000000;j+=i,p[j]=1);
}
for(i=1001;i<1000000;i++)
if(!p[i])
p[++pr]=i;
}