Pagini recente » Cod sursa (job #2170953) | Cod sursa (job #2725925) | Cod sursa (job #2891648) | Cod sursa (job #1102684) | Cod sursa (job #1560972)
# include <cstdio>
# define N 1000010
# define P 100001
# define MOD 9973
using namespace std;
bool prim[N];
long long ciur[P];
long long n,x,putere,suma_divizorilor,numarul_divizorilor;
inline long long pow(long long a, long long b)
{
long long p=1;
while(b)
{
if(b%2==0) b/=2, a*=a;
else p*=a,b--;
}
return p;
}
void Ciur()
{
for(long long i=2; i<N; ++i)
prim[i]=true;
for(long long i=2; i<N; ++i)
if(prim[i]==true)
{
ciur[++ciur[0]]=i;
for(long long j=i; j<N; j+=i)
prim[j]=false;
}
}
int main()
{
freopen("ssnd.in", "r", stdin);
freopen("ssnd.out", "w", stdout);
scanf("%lld\n", &n);
Ciur();
for(long long i=1; i<=n; ++i)
{
scanf("%lld\n", &x);
suma_divizorilor=1;
numarul_divizorilor=1;
for(long long j=1; j<=ciur[0] && ciur[j]*ciur[j]<=x; ++j)
if(x%ciur[j]==0)
{
putere=0;
while(x%ciur[j]==0)
{
putere++;
x/=ciur[j];
}
numarul_divizorilor*=(putere+1);
suma_divizorilor*=(pow(ciur[j],putere+1)-1);
suma_divizorilor/=(ciur[j]-1);
suma_divizorilor%=MOD;
if(x==1) break;
}
if(x!=1)
{
numarul_divizorilor*=2;
suma_divizorilor*=(x*x-1);
suma_divizorilor/=(x-1);
suma_divizorilor%=MOD;
}
printf("%lld %lld\n", numarul_divizorilor, suma_divizorilor);
}
}