Pagini recente » Cod sursa (job #772500) | Cod sursa (job #650880)
Cod sursa(job #650880)
#include <stdio.h>
#define NMAX 1000000
long ciur[NMAX];
long viz[NMAX];
void eratostene()
{
long j,i;
for(i=3;i<=NMAX;i+=2)
{
if(viz[i]==0)
{
ciur[++ciur[0]]=i;
for(j=i+i+i;j<=NMAX;j+=2*i)
viz[j]=1;
}
}
}
FILE *out;
void solve(long x)
{
long i,nr_div,suma,aux_div,p;
nr_div=suma=1;
for(i=1;ciur[i]*ciur[i]<=x;i++)
{
if(x%ciur[i]==0)
{
aux_div=1;
p=ciur[i];
while(x%ciur[i]==0)
{
aux_div++;
p=p*ciur[i];
x/=ciur[i];
}
nr_div*=aux_div;
suma*=(p-1)/(ciur[i]-1)%9973;
}
}
if(x!=1)
{
suma*=(x*x-1)/(x-1)%9973;
nr_div*=2;
}
fprintf(out,"%ld %ld\n",nr_div,suma%9973);
}
int main()
{
FILE *in;
int i;
long n, x;
in=fopen("ssnd.in","r");
out=fopen("ssnd.out","w");
ciur[0]=1;
ciur[1]=2;
eratostene();
fscanf(in,"%ld",&n);
for(i=1;i<=n;i++)
{
fscanf(in,"%ld",&x);
solve(x);
}
fclose(in);
fclose(out);
return 0;
}