Pagini recente » Cod sursa (job #1314754) | Cod sursa (job #371269) | Cod sursa (job #1645346) | Cod sursa (job #2960487) | Cod sursa (job #966155)
Cod sursa(job #966155)
#include <cstdio>
#include <cmath>
using namespace std;
bool a[1000000];
int p[100000],nr=1,f[50],e[50],cur=0;
void ciur()
{
int i,j;
p[1]=2;
for(i=3;i<=1000000;i+=2)
{
if(a[i]==false)
{
nr++;
p[nr]=i;
if(i<1000)
for(j=i*i;j<=1000000;j=j+2*i)
a[j]=true;
}
}
}
void descompunere(long long n)
{
long long lim=sqrt((double)n),i=1,x=n;
cur=0;
while(p[i]<=lim&&x>1&&i<=nr)
{
if(x%p[i]==0)
{
cur++;
f[cur]=p[i];
e[cur]=0;
}
while(x%p[i]==0)
{
x=x/p[i];
e[cur]++;
lim=sqrt((double)x);
}
i++;
}
if(x>1)
{
cur++;
f[cur]=x;
e[cur]=1;
}
}
long long nr_div()
{
long long i,pr=1;
for(i=1;i<=cur;i++)
{
pr=(pr*(e[i]+1))%9973;
}
return pr;
}
long long s_div()
{
long long i,pr=1,s,j;
for(i=1;i<=cur;i++)
{
s=1;
for(j=1;j<=e[i]+1;j++)
s=s*f[i];
s=s-1;
s=s/(f[i]-1);
pr=(pr*s)%9973;
}
return pr;
}
int main()
{
ciur();
int t,i,j;
long long n;
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
scanf("%d",&t);
for(j=1;j<=t;j++)
{
scanf("%lld",&n);
descompunere(n);
printf("%lld %lld\n",nr_div(),s_div());
}
return 0;
}