Pagini recente » Cod sursa (job #2326270) | Cod sursa (job #2200456) | Cod sursa (job #1673122) | Cod sursa (job #514399) | Cod sursa (job #496281)
Cod sursa(job #496281)
#include<fstream>
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
int n;
const int N=1<<20;
const int mod = 9973;
bool ciur[N];
int prim[N>>3];
void ciurul()
{
int i,j;
for(i=2; i*i<N; ++i)
if (!ciur[i])
for(j=i*i; j<N; j+=i)
ciur[j]=true;
}
void rezolva(int x)
{
int pt,pr=1,i,nd=1,r;
for(i=1;prim[i]*prim[i]<=x; ++i)
if (x%prim[i]==0)
{
pt=0;
r=prim[i];
while (x%prim[i]==0)
{
x=x/prim[i];
r=r*prim[i];
++pt;
}
nd=nd*(pt+1);
r=r-1;
pr*=r/(prim[i]-1);
pr %= mod;
}
if (x>1)
{
nd=nd*2;
pr=pr*(x+1)%mod;
}
g<<nd<<" "<<pr<<"\n";
}
int main()
{
int i,nrp=0,a;
f>>n;
ciurul();
for(i=2;i<N;++i)
if (ciur[i]==0) prim[++nrp]=i;
for(i=1; i<=n; ++i)
{
f>>a;
rezolva(a);
}
return 0;
}