Pagini recente » Cod sursa (job #2295) | Cod sursa (job #994637) | Cod sursa (job #562751) | Cod sursa (job #3224708) | Cod sursa (job #1108352)
#include <iostream>
#include <fstream>
#define mod 9973
#define maxn 1000010
#include <cstring>
using namespace std;
ifstream in("ssnd.in");
ofstream out("ssnd.out");
bool c[maxn];
int prime[maxn];
int ct;
void ciur()
{
int i,j;
c[0]=1;
c[1]=1;
for(i=4;i<maxn;i+=2)
c[i]=1;
for(i=3;i*i<maxn;i+=2)
if(c[i]==0)
for(j=i*i;j<maxn;j=j+2*i)
c[j]=1;
for(i=2;i<maxn;i++)
if(c[i]==0)
prime[++ct]=i;
}
int lgpow(int b,int p)
{
if(p==0)
return 1;
if(p==1)
return b%mod;
if(p%2==0)
return (lgpow(b*b%mod,p/2))%mod;
else
return (b*lgpow(b*b%mod,(p-1)/2))%mod;
}
void solve(int x)
{
int i,d,p;
int lim=x,y;
int nr=1,sum=1;
for(y=1,i=prime[y];i*i<=lim&&x!=1&&y<=ct;y++)
{
i=prime[y];
if(x%i==0)
{
p=i;
d=0;
while(x%i==0)
{
x=x/i;
d++;
}
nr=nr*(d+1);
sum=(sum % mod)*((lgpow(p,d+1)-1)%mod)*(lgpow(p-1,mod-2)%mod);
}
}
if(x!=1)
{
nr*=2;
sum=sum*(x+1)%mod;
}
out<<nr<<" "<<sum%mod<<"\n";
}
int main()
{
int t,n;
in>>t;
ciur();
while(t--)
{
in>>n;
solve(n);
}
return 0;
}