Pagini recente » Cod sursa (job #2230674) | Cod sursa (job #1100926) | Rating Borsos Tamas (btamasya) | Cod sursa (job #2508345) | Cod sursa (job #598872)
Cod sursa(job #598872)
#include <stdio.h>
#include <bitset>
#define Nmare 1000005
#define MOD 9973
using namespace std;
int t,K,P[Nmare];
long p,crt,i,j,nr[1001];
bitset <Nmare> ciur;
void creare_ciur (void)
{
for (i=2; i<=Nmare; i++)
if (!ciur[i])
{
P[++K]=i;
for (j=i+i; j<=Nmare; j+=i) ciur[j]=1;
}
}
int pow (int x,int y)
{
int rez=1;
for(;y>0;y--) rez=(rez*x)%MOD;
return rez;
}
void rezolvare (void)
{
scanf("%d", &crt);
long nr=1,S=1,N=crt;
if (ciur[crt])
{
for (i=1; i<=K && P[i]*P[i]<=N; i++)
{
p=0;
while (crt%P[i]==0) {p++; crt/=P[i];}
if (p)
{
nr=(p+1)*nr;
S=(S*(pow(P[i],p+1)-1)/(P[i]-1))%MOD;
}
}
printf("%d %d\n", nr,S);
}
else
{
printf("2 %d\n", crt+1);
}
}
int main ()
{
creare_ciur();
freopen("ssnd.in", "r",stdin);
freopen("ssnd.out", "w",stdout);
scanf("%d", &t);
for (; t>0; t--) rezolvare();
return 0;
}