Pagini recente » Cod sursa (job #2611252) | Cod sursa (job #2904605) | Cod sursa (job #2479761) | Cod sursa (job #1526624) | Cod sursa (job #1591182)
#include <fstream>
#define nrmax 3400000
#define mod 9973
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
bool ciur[nrmax+1];
unsigned long long n,x,p[500000],z;
void ciure();
unsigned long long ndiv(long long x)
{
unsigned long long i,nr,e;
nr=1;
i=1;
while(p[i]*p[i]<=x && i<=z)
{
e=0;
while(x%p[i]==0)
{
x/=p[i];
e++;
}
nr*=(e+1);
i++;
}
if(x>1)
nr*=2;
return nr;
}
unsigned long long power(unsigned long long n,unsigned long long p);
unsigned long long sumdiv(unsigned long long x);
int main()
{
ios_base::sync_with_stdio(false);
ciure();
fin>>n;
for(int i=1; i<=n; i++)
{
fin>>x;
fout<<ndiv(x)<<' '<<sumdiv(x)%mod<<'\n';
}
return 0;
}
unsigned long long power(unsigned long long n,unsigned long long p)
{
unsigned long long a=1;
n %= mod;
while(p>0)
{
if(p%2!=0)
a=(a*n)%mod;
p=p/2;
n=(n*n);
n %= mod;
}
return a;
}
void ciure()
{
ciur[1]=ciur[0]=1;
for( long long int i=2; i<=nrmax; i++)
if(ciur[i]==0)
{
z++;
p[z]=i;
for(long long j=i*i; j<=nrmax; j+=i)
ciur[j]=1;
}
}
unsigned long long sumdiv(unsigned long long x)
{
unsigned long long sum=1,i=1,e,s=0,j;
while(p[i]*p[i]<=x && i<=z)
{
s=0;
e=0;
while(x%p[i]==0)
{
x/=p[i];
++e;
}
s = (power(p[i], e+1) - 1) * power(p[i] - 1, mod - 2);
sum*=s%mod;
i++;
}
if(x>1)
sum*=(x+1)%mod;
return sum;
}