Pagini recente » Cod sursa (job #341218) | Cod sursa (job #888455) | Cod sursa (job #52141) | Cod sursa (job #651237) | Cod sursa (job #700937)
Cod sursa(job #700937)
#include<stdio.h>
#include <math.h>
long nr,i,t,suma,nrdiv,a[1000001],b[1000001];
void ciur(long x)
{
long nr=2,nrp,pr=0;
while(nr<=x)
{
if(a[nr]==0)
{
nrp=nr+nr;
while (nrp<x)
{
a[nrp]=1;
nrp+=nr;
}
pr++;
b[pr]=nr;
}
nr++;
}
}
long put(long x,long y)
{
long nrc=1,ic;
for(ic=1;ic<=y;ic++)
nrc=nrc*x%9973;
return nrc;
}
void prob(long nr)
{
nrdiv=1,suma=1;
long max=int(sqrt(nr)),i;
for(i=1;i<=max;i++)
{
if(nr%b[i]==0){
long p=1;
while (nr%b[i]==0)
{
p++;
nr/=b[i];
}
nrdiv*=p;
suma=(suma*((((put(b[i],p)-1)/(b[i]-1)))%9973))%9973;
}
}
}
int main()
{
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
scanf("%ld",&t);
ciur(1000000);
for(i=1;i<=t;i++)
{
scanf("%ld",&nr);
prob(nr);
if(nrdiv==1 && suma==1) nrdiv=2,suma=(nr+1)%9973;
printf("%ld %ld\n",nrdiv,suma);
}
return 0;
}