Pagini recente » Cod sursa (job #1535626) | Cod sursa (job #832153) | Cod sursa (job #2399154) | Cod sursa (job #2778802) | Cod sursa (job #742763)
Cod sursa(job #742763)
#include<cstdio>
#include<cstring>
#define DMAX 1000001
using namespace std;
int p[DMAX]={0,2},d[DMAX],ch[DMAX];bool c[DMAX];
int putere(int n,int p)
{
int s=1;
for(;p;p>>=1)
{
if(p&1)
s*=n;
n*=n;
}
return s;
}
void ciur()
{
int s=1,i,j;
for(i=3;i<=DMAX;i+=2)
if(!c[i])
{
p[++s]=i;
for(j=i+i;j<=DMAX;j+=i)
c[j]=1;
}
}
void rez()
{
freopen("ssnd.in","r",stdin);freopen("ssnd.out","w",stdout);
int a,i,s,t,st;
for(scanf("%d",&t);t;--t)
{
s=0;st=1;
scanf("%d",&a);
while(a!=1)
{
for(i=1;a%p[i];i++);
if(!ch[p[i]])
d[++s]=p[i];
ch[p[i]]++;
a/=p[i];
}
for(i=1;i<=s;i++)
if(ch[d[i]])
st*=ch[d[i]]+1;
printf("%d ",st);
st=1;
for(i=1;i<=s;i++)
st*=(putere(d[i],ch[d[i]]+1)-1)/(d[i]-1);
printf("%d\n",st);
memset(ch,0,sizeof(ch));
}
}
int main()
{
ciur();
rez();
}