Pagini recente » Cod sursa (job #2199305) | Cod sursa (job #1571693)
#include <cstdio>
using namespace std;
int const M = 9973;
int m = 1000000;
long long sumDiv;
int p[2000001];
bool c[2000001];
void ciur()
{
int i,j;
for(i = 2; i*i <= m; i++)
if(c[i] == false)
for(j = i*i; j <= m; j += i)
c[j] = true;
}
int numdiv(int x)
{
int i,ndiv;
long long divTotal = 1,pow;
for(i = 1; p[i]*p[i] <= x; i++)
{
ndiv = 1;
pow = p[i];
while(x % p[i] == 0)
{
ndiv++;
sumDiv += pow % M;
pow *= p[i];
x /= p[i];
}
divTotal *= ndiv;
}
if(x != 1)
{
divTotal *= 2;
sumDiv *= ((x * x - 1) / (x - 1)) % M;
}
return divTotal;
}
int main()
{
int i,t,x,nr=0;
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
scanf("%d",&t);
ciur();
for(i = 2; i <= m; i++)
if(c[i] == false) p[++nr] = i;
for(i=1; i<=t; i++)
{
sumDiv = 1;
scanf("%d",&x);
printf("%d ",numdiv(x));
printf("%d\n",sumDiv);
}
return 0;
}