Pagini recente » Cod sursa (job #2595620) | Monitorul de evaluare | Cod sursa (job #1392468) | Cod sursa (job #3294851) | Cod sursa (job #1812913)
#include<bits/stdc++.h>
#define max1 1000003
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
long long t,n,s,d,np;
bitset<max1>v;
long long v1[100002];
void ciur()
{
np=1;
v1[1]=2;
for(int i=4;i<=max1;i+=2)
v[i]=1;
for(int i=3;i<=max1;i+=2)
{
if(v[i]==0)
{
++np;
v1[np]=i;
for(int j=i+i;j<=max1;j=j+i)
v[j]=1;
}
}
}
int main()
{
f>>t;
ciur();
for(int i=1;i<=t;++i)
{
f>>n;
long long n1=n;
s=1;
d=1;
for(int j=1;v1[j]<=(int)sqrt(n);++j)
if(n%v1[j]==0)
{
int nd=0;
long long q=v1[j];
while(n%q==0)
{
++nd;
n1/=v1[j];
q=q*v1[j];
}
d=d*(nd+1);
s=s*(q-1)/(v1[j]-1);
}
if(n1>1)
{
if(n1==n)
g<<2<<" "<<n+1<<'\n';
else{
g<<d*2<<" ";
g<<s*(n1*n1-1)/(n1-1)<<'\n';
}
}
else
g<<d<<" "<<s<<'\n';
}
return 0;
}