Pagini recente » Cod sursa (job #2175784) | Cod sursa (job #1805993) | Cod sursa (job #3179548) | Cod sursa (job #1254546) | Cod sursa (job #2246348)
#include <iostream>
#include <fstream>
#include <math.h>
#include <cstring>
#define M 9973
std::ifstream in("ssnd.in");
std::ofstream out("ssnd.out");
using namespace std;
int sir[1000000];
void ciur()
{
memset(sir,1,sizeof(sir));
for(int i=2;i*i<=1000000;i++)
{
if(sir[i])
{
for(int j=i*i;j<=1000000;j+=i)
sir[i]=0;
}
}
}
long long t,n;
void div(long long k,long long &a,long long &b)
{
long long p=2,numar,nrdiv=1,prod=1,aux=1,ink=k;
while(k>1 && p*p<=ink)
{
if(k<1000000)
{
if(sir[k])
{
nrdiv*=2;
prod*= ((k*k-1)/(k-1))%M;
return;
}
}
numar=0;
aux=p;
while(k%p==0)
{
numar++;
k/=p;
aux*=p;
}
if(k%p)
{
nrdiv=(nrdiv*(numar+1))%M;
prod=(prod* (1LL*((((aux-1)))/(p-1))))%M;
}
p++;
}
if(k>1)
{
nrdiv*=2;
prod*=(k*k-1)/(k-1);
}
a=nrdiv%M;
b=prod%M;
}
int main()
{
ciur();
in>>n;
for(int i=0; i<n; i++)
{
long long a,b;
in>>t;
div(t,a,b);
out<<a<<" "<<b<<"\n";
}
return 0;
}