Pagini recente » Cod sursa (job #1166525) | Cod sursa (job #466449) | Cod sursa (job #1104780) | Cod sursa (job #18239) | Cod sursa (job #2422043)
#include<bits/stdc++.h>
#define MOD 9973
#define stop 1000006
using namespace std;
ifstream f ("ssnd.in");
ofstream g("ssnd.out");
bool p[stop];
//p[i]==1 i nu e prim
int prim[stop];
//prim[i]- numarul prim de 'rang' i
long long sumdiv, nrdiv;
long long n;
int t;
void ciur()
{
int q=0;
p[1]=1;
for (int i=4;i<=stop;i=i+2)
p[i]=1;
for (int i=3;i*i<=stop;i++)
if (p[i]==0)
{
for (int j=i*i;j<=stop;j+=2*i)
p[j]=1;
}
for (int i=1;i<=stop;i++)
if (p[i]==0)
prim[++q]=i;
}
long long lgput (long long a , long long b)
{
if (b==0)
return 1;
if (b%2)
return a * lgput ((a*a), b/2);
else return lgput((a*a),b/2);
}
int main()
{
ciur();
f>>t;
while (t--)
{
sumdiv=1;
nrdiv=1;
f>>n;
for (int i=1; n!=1 ;i++)
if (n%prim[i]==0)
{
long long nr=0;
while (n%prim[i]==0)
{
nr++;
n/=prim[i];
}
nrdiv*=(nr+1);
sumdiv*=((lgput(prim[i],nr+1)-1)/(prim[i]-1));
sumdiv%=MOD;
}
g<<nrdiv<<" "<<sumdiv<<'\n';
}
}