Pagini recente » Cod sursa (job #2742335) | Cod sursa (job #1469183) | Profil E.L. | Cod sursa (job #1840109) | Cod sursa (job #1486437)
#include <cstdio>
#include <cmath>
#define MOD 9973
bool ciur[1000001];
int prime[80001];
int t;
long long n;
long long put(int a,int b)
{
long long res=1,num=a;
for(;b!=0;b>>=1)
{
if((b&1)==1)
{
res*=num;
}
num*=num;
}
return res;
}
int main()
{
freopen ("ssnd.in","r",stdin);
freopen ("ssnd.out","w",stdout);
int ct=1;
for(int i=2; i<=1000000; i++)
{
if(ciur[i]==0)
{
for(int j=i; j<=1000000/i; j++) ciur[i*j]=1;
}
}
for(int i=2; i<=1000000; i++)
{
if(ciur[i]==0)
{
prime[ct]=i;
ct++;
}
}
scanf("%d",&t);
for(int x=1; x<=t; x++)
{
long long pcard=1,psum=1;
scanf("%lld",&n);
int lun=sqrt(n)+1;
for(int i=1; i<ct&&prime[i]*prime[i]<=n; i++)
{
if(n%prime[i]==0)
{
int c=0;
while(n%prime[i]==0)
{
n/=prime[i];
c++;
}
pcard*=(c+1);
psum*=((put(prime[i],c+1)-1));
psum/=((prime[i]-1));
psum%=MOD;
if(n==1) break;
}
}
if(n!=1)
{
pcard*=2;
psum*=(n*n-1);
psum/=(n-1);
psum%=MOD;
}
printf("%lld %lld\n",pcard,psum);
}
}