Pagini recente » Cod sursa (job #2824534) | Cod sursa (job #351113) | Cod sursa (job #2626294) | Cod sursa (job #828601) | Cod sursa (job #988712)
Cod sursa(job #988712)
#include <cstdio>
using namespace std;
long long nr=1;
int a[78498];
char p[62501];
void ciur(int n)
{
int i, j;
for (i = 1; ((i * i) << 1) + (i << 1) <= n; i += 1) {
if ((p[i >> 3] & (1 << (i & 7))) == 0) {
for (j = ((i * i) << 1) + (i << 1); (j << 1) + 1 <= n; j += (i << 1) + 1) {
p[j >> 3] |= (1 << (j & 7));
}
}
}
for (i = 1; 2 * i + 1 <= n; ++i)
if ((p[i >> 3] & (1 << (i & 7))) == 0)
a[nr++]=2*i+1;
a[0]=2;
}
int main()
{
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
int i,t;
long long n,s,k,p;
ciur(1000000);
scanf("%d",&t);
while(t)
{
--t;
scanf("%lld",&n);
if(n==1) printf("1 1\n");
else
{
nr=1;s=1;
for(i=0;n>1;++i)
{
k=0;p=1;
while(n%a[i]==0)
{
++k;
p*=a[i];
n=n/a[i];
}
if(k)
{
nr*=k+1;
p*=a[i];
s=(s*(p-1)/(a[i]-1))%9973;
}
}
printf("%lld %d\n",nr,s);
}
}
return 0;
}