Pagini recente » Cod sursa (job #2686890) | Cod sursa (job #789764) | Cod sursa (job #3181246) | Cod sursa (job #2361851) | Cod sursa (job #846576)
Cod sursa(job #846576)
#include <stdio.h>
#include <algorithm>
#include <cmath>
#include <cctype>
#include <cstring>
#include <vector>
#include <deque>
#include <set>
using namespace std;
#define Max 9973
unsigned char p[250001];
int pr[80000],nr;
void ciur()
{
int i=2;
while(i<=1000)
{
while(p[i/8]&(1<<(i%8)))i++;
for(int j=i*i;j<=1000000;j+=i)p[j/8]|=(1<<(j%8));
i++;
}
for(int i=2;i<=1000000;i++)
if(!(p[i/8]&(1<<(i%8))))
{
nr++;
pr[nr]=i;
}
}
void desc(long long a)
{
int d=1,i=1,r;
long long s=1,p;
while(pr[i]*pr[i]<=a)
{
if(a%pr[i]==0)
{
p=pr[i];
r=0;
while(a%pr[i]==0)
{
r++;
a/=pr[i];
p*=pr[i];
}
d*=r+1;
s=(s*(p-1)/(pr[i]-1))%Max;
}
i++;
}
if(a!=1)
{
s=(s*(a*a-1)/(a-1));
d*=2;
}
printf("%d %lld\n",d,s
);
}
int main()
{
int n;
long long a;
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
scanf("%d",&n);
ciur();
while(n--)
{
scanf("%lld",&a);
desc(a);
}
return 0;
}