Pagini recente » Cod sursa (job #934291) | Cod sursa (job #2403604) | Cod sursa (job #44330) | Cod sursa (job #429672) | Cod sursa (job #1413600)
#include <iostream>
#include <cstdio>
#include <cmath>
#include <bitset>
using namespace std;
bitset <1000005> v;
long d[10000],p[10000],prim[20000];
long long i,n,t,q,j,nrdiv,sdiv,k;
int main()
{
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
//CIUR
i=2; n=20;
while (i<=n) {i=i+2; v[i]=1;}
i=3;
while (i<=n) if (v[i]!=1)
{
j=i*2;
while (j<=n) {v[j]=1; j=j+i;}
i=i+2;
}
else {i=i+2;}
v[1]=1; v[0]=1;
k=0;
for (i=2;i<=n;i++) if (v[i]==0) {k++; prim[k]=i;}
scanf("%lld",&t);
for (q=1;q<=t;q++)
{
scanf("%lld",&n);
i=1; k=0;
while (n!=1)
{
if (n%prim[i]==0) k++;
while (n%prim[i]==0) {d[k]++; n=n/prim[i];}
if (d[k]>0) p[k]=prim[i];
i++;
}
nrdiv=1;
for (i=1;i<=k;i++) nrdiv=nrdiv*(d[i]+1);
sdiv=1;
for (i=1;i<=k;i++) {sdiv=sdiv*((pow(p[i],d[i]+1)-1)/(p[i]-1)); p[i]=0; d[i]=0;}
printf("%lld %lld\n",nrdiv,sdiv);
}
return 0;
}