Pagini recente » Cod sursa (job #39102) | Cod sursa (job #906480) | Cod sursa (job #3263661) | Cod sursa (job #2877701) | Cod sursa (job #626973)
Cod sursa(job #626973)
#include<cstdio>
#include<bitset>
#include<vector>
using namespace std;
int n,t,x,nr,suma,d,p,aux,i,ok,mod=9973;
bitset<1000010> pr;
vector<int> PR;
void read(),solve(),ciur();
int main()
{
read();
solve();
return 0;
}
void read()
{
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
scanf("%d",&t);
}
void solve()
{
vector<int>::iterator it;
ciur();
for(;t;t--)
{
nr=1;suma=1;ok=0;
scanf("%d",&x);
n=x;
for(it=PR.begin();it!=PR.end();it++)
{
p=*it;
if(p*p>n)break;
if(pr[n]==0){printf("2 %d\n",(1+n)%mod);ok=1;break;}
d=0;
while(x%p==0){d++;x/=p;}
nr*=(d+1);
aux=1;
for(i=0;i<=d;i++)aux*=p;
suma*=(aux-1)/(p-1);suma%=mod;
}
if(!ok)printf("%d %d\n",nr,suma);
}
}
void ciur()
{
PR.push_back(2);
for(i=4;i*i<=1000010;i+=2)pr[i]=1;
for(int i=3;i*i<=1000000;i+=2)
{
if(pr[i]==0)
{
PR.push_back(i);
for(int j=i*i;j<=1000010;j+=i)
pr[j]=1;
}
}
}