Pagini recente » Cod sursa (job #1635569) | Cod sursa (job #1502643) | Cod sursa (job #1665071) | Cod sursa (job #294804) | Cod sursa (job #859170)
Cod sursa(job #859170)
#include <stdio.h>
#include <math.h>
using namespace std;
FILE *f=fopen("ssnd.in","r");
FILE *g=fopen("ssnd.out","w");
int v[1000001],i,j,t,nr,p,m;
long long div,div2,s,x,l;
void ciur()
{
v[2]=0;
for(i=3;i<=1000000;i+=2)
if (v[i]==0)
{
for(j=3;j<=1000000/i;j+=2)
v[i*j]=1;
}
}
int main()
{
fscanf(f,"%d",&t);
ciur();
for(i=1;i<=t;i++)
{
fscanf(f,"%d",&x);
nr=1;
s=1;
m=trunc(sqrt(x));
l=x;
for(j=2;j<=m;j++)
if (x%j==0 && v[j]==0 &&(j%2!=0||j==2) )
{
p=0;
div=1;
while(l%j==0){
p++;l=l/j;
div=div*j;
}
div=div*j-1;
s=(s*(div/(j-1)))%9973;
nr=nr*(p+1);
}
if (l!=1 && l!=x){nr=nr*2;s=(s*(l*l-1)/(l-1))%9973;}
if (v[x]==0 && (x%2!=0)||x==2){nr=nr*2;s=(s*(x*x-1)/(x-1))%9973;}
fprintf(g,"%d %d\n",nr,s);
}
fclose(g);
return 0;
}