Pagini recente » Cod sursa (job #1661190) | Cod sursa (job #3184747) | Cod sursa (job #488677) | Cod sursa (job #1432879) | Cod sursa (job #634417)
Cod sursa(job #634417)
#include<fstream>
#include<bitset>
#include<vector>
const long Nmax = 1000008;
const long MOD = 9973;
using namespace std;
bitset<Nmax> ciur;
vector<long> prime;
long t;
long n;
long nr=1;
long suma=1;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
void Ciur ()
{
long i = 0 ,j = 0;
prime.push_back(2);
for(i=3; i<=Nmax; i+=2)
if(!ciur[i])
{
prime.push_back(i);
for(j = i*i; j<= Nmax; j += (i+i))
if(!ciur[j])
ciur[j]=1;
}
}
void Sol()
{
long i,j;
nr = 1;
long suma = 1;
for( i = 0; prime[i] <= n && n <= prime[t-1]; ++i)
{
if( n == prime[i] && nr == 1 && suma == 1)
{
fout<<2<<" "<<(1+n)%MOD<<"\n";
return;
}
if( n % prime[i] == 0)
{
long exp;
long n2 = n;
for (exp=0; n%prime[i]==0; n/=prime[i])
{
++exp;
}
nr = nr * (exp+1);
suma = suma * ((n2/n * prime[i]) - 1 ) / ( prime[i] - 1) % MOD;
suma = suma % MOD;
}
}
if( n > 1)
{
nr*=2;
suma=suma*(n*n-1)/(n-1) % MOD;
}
fout<<nr<<" "<<suma<<"\n";
}
int main()
{
Ciur();
long i;
fin>>t;
for( i=0;i<t;++i)
{
fin>>n;
Sol();
}
fout.close();
fin.close();
return 0;
}