Pagini recente » Cod sursa (job #2187629) | Cod sursa (job #2454218) | Cod sursa (job #375937) | Cod sursa (job #2580166) | Cod sursa (job #2285064)
#include <fstream>
std::ifstream cin("ssnd.in");
std::ofstream cout("ssnd.out");
#define ll long long
#define maxn 1000005
const int mod=9973;
ll primes[90000];
bool ciur[maxn];
ll t,x,k;
void allPrimes(); //creates all primes to 1 mil
int main()
{
ll i,nr,s,pow,sum;
cin>>t;
allPrimes();
for(;t--;){
cin>>x;
nr=1;s=1;i=1;
while(x!=1){
pow=0;
sum=1;
if(primes[i]*primes[i]>x){
nr*=2;
s=(s*((x*x-1)/(x-1)))%mod;
x=1;
}
if(x%primes[i]==0){
while(x%primes[i]==0)
pow++,x/=primes[i];
nr*=(pow+1);
for(int j=0;j<=pow;j++)
sum=(sum*primes[i])%mod;
sum--;
s=s*(sum/(primes[i]-1));
}
i++;
}
cout<<nr<<' '<<s<<'\n';
}
return 0;
}
void allPrimes(){
ll i,j;
primes[1]=2;
k=1;
for(i=4;i<maxn;i+=2){
ciur[i]=1;
}
for(i=3;i<maxn;i+=2)
if(!ciur[i]){
primes[++k]=i;
for(j=i+i+i;j<maxn;j+=(i<<1))
ciur[j]=1;
}
}