Pagini recente » Cod sursa (job #1479045) | Cod sursa (job #2731391) | Cod sursa (job #257645) | Cod sursa (job #602944) | Cod sursa (job #1514918)
#include<stdio.h>
#include<math.h>
FILE *fin,*fout;
bool ciur[1000001];
int prime[100001],pr,t,co;
long long int el,sm,x;
long long int po(int nr,int p)
{
long long val=nr,res=1;
for(;p!=0;p>>=1)
{
if((p&1)==1)
{
res*=val;
}
val*=val;
}
return res;
}
int main()
{
fin=fopen("ssnd.in","r");
fout=fopen("ssnd.out","w");
pr=1;
prime[pr]=2;
for(int i=3;i<1000001;i+=2)
{
if(ciur[i]==0)
{
for(int j=2;j<1000001/i;j++)
{
ciur[i*j]=1;
}
pr++;
prime[pr]=i;
}
}
fscanf(fin,"%d",&t);
for(int i=1;i<=t;i++)
{
sm=1;
el=1;
fscanf(fin,"%lld",&x);
for(int j=1;j<=pr&&prime[j]*prime[j]<=x;j++)
{
if(x%prime[j]==0)
{
co=0;
while(x%prime[j]==0)
{
co++;
x/=prime[j];
}
el*=(co+1);
sm*=(po(prime[j],co+1)-1);
sm/=(prime[j]-1);
sm%=9973;
if(x==1)
{
break;
}
}
}
if(x!=1)
{
el*=2;
sm*=(x*x-1);
sm/=(x-1);
sm%=9973;
}
fprintf(fout,"%lld %lld\n",el,sm);
}
}