Pagini recente » Cod sursa (job #2660143) | Cod sursa (job #2097930) | Cod sursa (job #881471) | Cod sursa (job #412978) | Cod sursa (job #1585835)
#include <iostream>
#include <fstream>
#include <cmath>
#define MAX_N 1000005
using namespace std;
long long n;
int m,prim[80000];
bool v[1000005];
void ciur()
{int i,j;
for(i=1;i<MAX_N;i++)
v[i]=0;
m=0;
v[2]=0;i=2;
while(i<=MAX_N)
{if(v[i]==0)
{j=1;
m++;
prim[m]=i;
while((i*(j+1))<=MAX_N)
{j++;
v[j*i]=1;
}
}
i++;}
}
int pow(int x,int y)
{int n;
if(y==0) return 1;
n=1;
while(y>0)
{
if(y%2==0)
{x=x*x;
y=y/2;}
else
{n=n*x;
y--;}
}
return n;
}
int main()
{ int t,i,sum,nr,max,x,y,d;
fstream f("ssnd.in",ios::in);
fstream g("ssnd.out",ios::out);
f>>t;
ciur();
max=0;
for(x=1;x<=t;x++)
{f>>n;
if(v[n]==0)
cout<<2<<" "<<(n+1)%9973<<'\n';
else
{sum=1;
nr=1;
i=1;
while(n!=1)
{d=0;
while(n%prim[i]==0)
{d++;
n=n/prim[i];
}
nr=nr*(d+1)%9973;
sum=(sum*((pow(prim[i],d+1)-1)/(prim[i]-1)))%9973;
i++;
}
cout<<nr%9973<<" "<<sum%9973<<'\n';
}}
f.close();
g.close();
}