Pagini recente » Cod sursa (job #3168240) | Cod sursa (job #2808811) | Cod sursa (job #829287) | Cod sursa (job #2675801) | Cod sursa (job #904225)
Cod sursa(job #904225)
#include <stdio.h>
FILE *f,*s;
long long unsigned int i,j,k,m,n,p;
int v1[1000005],v2[1000005];
long long int pow(long long int a,long long int b)
{
long long unsigned int r=1;
while(b!=0)
{
r*=a;
b--;
}
return r;
}
int main()
{
f=fopen("ssnd.in","r");
s=fopen("ssnd.out","w");
fscanf(f,"%lld",&n);
v2[++v2[0]]=2;
for(i=3;i<=1000000;i+=2)
{
if(v1[i]==0)
{
v2[++v2[0]]=i;
for(j=i+i;j<=1000000;j+=i)
v1[j]=1;
}
}
for(i=1;i<=n;i++)
{
fscanf(f,"%lld",&m);
long long int nr=m;
long long int nrd=1;
long long int sum=1;
for(j=1;(long long int)v2[j]*v2[j]<=nr;j++)
{
p=0;
while(nr%v2[j]==0)
{
p++;
nr/=v2[j];
}
if(p!=0)
{
nrd*=(p+1);
sum*=(pow(v2[j],p+1)-1)/(v2[j]-1);
sum%=9973;
}
}
if(nr>1)
{
nrd*=2;
sum*=(pow(nr,2)-1)/(nr-1);
sum%=9973;
}
fprintf(s,"%lld %lld\n",nrd,sum);
}
fclose(s);
return 0;
}