Pagini recente » Cod sursa (job #417706) | Cod sursa (job #3302124) | Cod sursa (job #2184385) | Cod sursa (job #3339693) | Cod sursa (job #3354548)
#include <bits/stdc++.h>
using namespace std;
#define MOD 9973
ifstream f("ssnd.in");
ofstream g("ssnd.out");
bool c[2000001];
int prime[1000001];
int k;
int n,x,nrdiv,sumdiv;
int put(int a,int n)
{ int p=1;
for(int k=1;k<=n;k<<=1)
{ if(n&k) p=p*a%MOD;
a=a*a%MOD;
}
return p;
}
bool ciur()
{ c[0]=c[1]=1;
for(int i=2;i<=1e6;i++)
if(c[i]==0)
for(int j=2;i*j<=1e6;j++) c[i*j]=1;
for(int i=1;i<=1e6;i++)
if(c[i]==0) prime[++k]=i;
}
void descompunere(int x,int &nrdiv, int &sumdiv)
{ int d=1,cn=1;
while(x>1)
{ int p=0;
while(x%prime[d]==0)
{ x/=prime[d];
p++;
}
nrdiv*=(p+1);
long long p_sum=1;
long long p_pow=1;
for(int i=1;i<=p;i++)
{ p_pow=(p_pow*prime[d])%MOD;
p_sum=(p_sum+p_pow)%MOD;
}
sumdiv=(sumdiv*p_sum)%MOD;
d++;
}
if(x>1)
{ nrdiv=nrdiv*2;
sumdiv=(sumdiv*(1+x%MOD))%MOD;
}
}
int main()
{ cin>>n;
ciur();
while(n--)
{ cin>>x;
nrdiv=1,sumdiv=1;
descompunere(x,nrdiv,sumdiv);
cout<<nrdiv<<" "<<sumdiv<<'\n';
}
return 0;
}