Cod sursa(job #494662)
| Utilizator | Data | 22 octombrie 2010 15:46:36 | |
|---|---|---|---|
| Problema | Suma si numarul divizorilor | Scor | 40 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.52 kb |
#include<stdio.h>
int main()
{
int i,n,a,tau,sigma,p,t;
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
sigma = tau = 1;
for(i=2;i*i<=n;++i)
if(n%i ==0)
{
p=0;
a=1;
while(n%i==0)
{
n/=i;
++p;
a*=i;
}
a*=i;
tau*=1+p;
sigma=(sigma*(a-1)/(i-1))%9973;
}
if(n!=1)
{
tau*=2;
sigma=(sigma*(n+1))%9973;
}
printf("%d %d\n",tau,sigma%9973);
}
return 0;
}
