Pagini recente » Cod sursa (job #2330652) | Cod sursa (job #2340392) | Cod sursa (job #100790) | Cod sursa (job #2043096) | Cod sursa (job #1167048)
#include <cstdio>
#include <bitset>
using namespace std;
const int N=1000002;
bitset <N> v;
int p[78500];
const int mod=9973;
void ciur()
{
int i,j;
p[++p[0]]=2;
for(i=3;i*i<N;i+=2)
{ if(!v[i])
for(j=i*i;j<N;j+=i) v[j]=1;
}
for(i=3;i<N;i+=2) if(!v[i]) {p[++p[0]]=i;}
}
long long putere(int a,int p)
{
long long result=1;
while(p)
{
if(p&1) result=(result*a)%mod;
a=((a%mod)*a)%mod;
p>>=1;
}
return result;
}
int main()
{ freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
int t,i,j,q,x,nr;
long long sum,n,ok,a,b;
ciur();
scanf("%d",&t);
for(i=0;i<t;i++)
{
sum=1;
nr=1;
scanf("%lld",&n);
ok=n;
for(j=1;n>1&&j<=p[0];j++)
{ q=0;
x=n;
a=1;
if(p[j]==84421)
{while(n%p[j]==0)
{
q++;
a*=p[j];
n/=p[j];
}
}
while(n%p[j]==0)
{
q++;
a*=p[j];
n/=p[j];
}
if(q>0)
{
nr*=(q+1);
a=(a*p[j]-1)%mod;
b=putere(p[j]-1,mod-2)%mod;
sum=(((sum*b)%mod)*a)%mod;
}
}
if(n>1)
{
nr*=2;
sum*=n;
sum=sum%mod;
}
printf("%d %lld\n",nr,sum%mod);
}
}