Pagini recente » Cod sursa (job #1473828) | Cod sursa (job #3352099) | Cod sursa (job #826029) | Cod sursa (job #828735) | Cod sursa (job #1397002)
#include <cstdio>
#include <cmath>
bool ciur[1000001];
int prime[80001];
int t;
long long n;
long long put(int b,int putere)
{
if(putere==0) return 1;
if(putere==1) return b;
int temp=put(b,putere/2);
return temp*temp*put(b,(putere%2));
}
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++;
}
//if(ct==-100) printf("%d %d\n",prime[i],c+1,put(prime[i],c+1));
pcard*=(c+1);
psum*=((put(prime[i],c+1)-1));
psum/=((prime[i]-1));
psum%=9973;
if(n==1) break;
}
}
if(n!=1)
{
pcard*=2;
psum*=(n*n-1);
psum/=(n-1);
psum%=9973;
}
printf("%lld %lld\n",pcard,psum);
}
}