Pagini recente » Cod sursa (job #72198) | Cod sursa (job #2747142) | Cod sursa (job #2250231) | Cod sursa (job #1839721) | Cod sursa (job #2722452)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin ("ssnd.in");
ofstream fout ("ssnd.out");
const int NMAX=1005;
long long v[NMAX],n;
long long prime[1000005];
long long nr;
void ciur()
{
int i,d;
for(i=1;i<=1000005;i++)
{
for(d=2;d*d<=i;d++)
if(i%d==0)
break;
if(d*d>i)
prime[++nr]=i;
}
}
long long lgput(long long a,long long b)
{
long long total=1;
if(b==0)
return 1;
else
{
if(b%2==0)
{
total=lgput(a,b/2);
total=total*total;
return total;
}
else
{
total=lgput(a,b/2);
total=total*total;
return total*a;
}
}
}
long long nrd(long long n)
{
long long d=1,p=0,total=1,s=1,ex=1;
ciur();
while(n>1)
{
p=0;
while(n%prime[d]==0)
{
n=n/prime[d];
p++;
}
if(p>0)
{
total*=(p+1);
}
d++;
/* if(prime[d]*prime[d]>n && n>1)
return total*2;*/
}
return total;
}
long long sdivi(long long n)
{
long long d=1,p=0,s=1,ex=1,k;
ciur();
while(n>1)
{
k=0;
p=1;
while(n%prime[d]==0)
{
k++;
n=n/prime[d];
p=p*prime[d];
}
if(k>0)
{
s=(s*((p*prime[d]-1)/(prime[d]-1))%9973)%9973;
}
d++;
/* if(prime[d]*prime[d]>n && n>1)
d=n;*/
}
return s%9973;
}
int main()
{
long long n,a,b,x,i,m;
fin>>n;
for(i=1;i<=n;i++)
{
fin>>m;
fout<<nrd(m)<<" "<<sdivi(m)<<"\n";
}
return 0;
}