Pagini recente » Cod sursa (job #1988547) | Cod sursa (job #744344) | Cod sursa (job #1883972) | Cod sursa (job #1347276) | Cod sursa (job #2287511)
#include <iostream>
#include <fstream>
#define ll long long
#define NMAX 1000005
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
const int mod=9973;
ll primes[90000];
bool ciur[NMAX];
ll t,x,k;
void Primes()
{
ll i,j;
primes[1]=2;
k=1;
for(i = 4; i < NMAX; i+=2)
ciur[i]=1;
for(i = 3; i < NMAX; i+=2)
{
if(!ciur[i])
primes[++k]=i;
for(j=i+i+i; j < NMAX; j+=(i<<1))
ciur[j]=1;
}
}
int main()
{
Primes();
ll i,nr,s,pow,sum;
fin>>t;
for(;t--;)
{
fin>>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=x/primes[i];
}
nr*=(pow+1);
for(int j = 0 ; j <= pow ; j++)
sum=sum*primes[i];
sum--;
s=((s*(sum/(primes[i]-1)))%mod);
}
i++;
}
fout<<nr<<" "<<s<<'\n';
}
return 0;
}