Pagini recente » Cod sursa (job #507506) | Istoria paginii runda/sim_oni_2007/clasament | Cod sursa (job #1503140) | Cod sursa (job #2238484) | Cod sursa (job #2454857)
#include <fstream>
using namespace std;
ifstream in("ssnd.in");
ofstream out("ssnd.out");
const int N=1000000;
bool ciur[N+1];
long long prime[78500];
int cnt;
void desc(long long n)
{
int d=1,cnt,rez=1;
long long rez1=1,x;
while(1LL*prime[d]*prime[d]<=n)
{
if(n%prime[d]==0)
{
cnt=0;
x=1;
while(n%prime[d]==0)
{
n/=prime[d];
x=x*prime[d];
cnt++;
}
rez=rez*(cnt+1);
rez1=rez1*(x*prime[d]-1)/(prime[d]-1);
}
d++;
}
if(n!=1)
{
rez*=2;
rez1*=(n+1);
}
out<<rez<<" "<<rez1<<'\n';
}
int main()
{
int n,i,d;
long long k;
prime[++cnt]=2;
for(i=4; i<=N; i+=2)
ciur[i]=1;
for(i=3; i*i<=N; i+=2)
if(!ciur[i])
{
prime[++cnt]=i;
for(d=i*i; d<=N; d+=2*i)
ciur[d]=1;
}
for(; i<=N; i+=2)
if(!ciur[i])
prime[++cnt]=i;
in>>n;
for(i=1; i<=n; i++)
{
in>>k;
desc(k);
}
return 0;
}