Cod sursa(job #650909)

Utilizator FIIBCPBuzila Octavian Calin FIIBCP Data 19 decembrie 2011 09:34:08
Problema Suma si numarul divizorilor Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.81 kb
#include <stdio.h>
FILE *f,*g;
int v[1000001];
int prim[100000];
int j,i,n;
void ciur()
{
for(i=2;i<=n;i++)v[i]=1;
   for(i=2;i<=n;i++)
  if(v[i]==1)
    {
    for(j=i+i;j<=n;j+=i)
        v[j]=0;}
        }
       
  

  
void rez(long long x)
{long long nr, sum, t, i, exp;
nr=sum=1;
for(i=1;prim[i]*prim[i]<=x;i++)
 {if(x%prim[i]==0)
 {exp=1;
 t=prim[i];
  while(x%prim[i]==0)
  {exp++;
   x=x/prim[i];
   t=t*prim[i];
   }
 nr*=exp;
  sum*=(t-1)/(prim[i]-1)%9973;
  }
 }
 if(x!=1)
 {sum*=(x*x-1)/(x-1)%9973;
   nr*=2;
  }
fprintf(g,"%lld %lld\n",nr,sum%9973);
 }

 int main()
{long long n, b;
 f=fopen("ssnd.in","r");
  g=fopen("ssnd.out","w");
ciur();
fscanf(f,"%lld",&n);
    while(n--)
   {fscanf(f,"%lld",&b);
     rez(b);
     
    }
fclose(f);
fclose(g);
return 0;
}