Cod sursa(job #455981)

Utilizator emanuela.hallerHaller Emanuela emanuela.haller Data 14 mai 2010 17:45:58
Problema Suma si numarul divizorilor Scor 30
Compilator c Status done
Runda Arhiva educationala Marime 1.16 kb
#include<stdio.h>

int main()
  {
   freopen("ssnd.in","r",stdin);
   freopen("ssnd.out","w",stdout);
   long i,j,nr=0,v[1000005];
   char prim[1000005];
   
   for(i=2;i<=1000000;i++)
      prim[i]=1;
      
   for(i=2;i<=1000000;i++)
     if (prim[i])
       {
        nr++;
        v[nr]=i;
        for(j=i+i;j<=1000000;j+=i)
           prim[j]=0;
       }   
/*   for(i=1;i<=nr;i++) printf("%i ",v[i]);
   printf("\n");*/
   int t;
   long n,m,nd,s,c,p;
   
   scanf("%i",&t);
   
   for(;t;--t)
      {
        scanf("%li",&n); 
        if (prim[n])      
          {
           nd=2;
           s=n+1;
           }
        else
          {   
        m=n;
        nd=1; s=1;
        for(i=1;n!=1;i++)
           {
            c=0;p=1;
            while(n%v[i]==0)
              {
               c++;
               n=n/v[i];
               p=p*v[i];
              } 
            if (c!=0)
              {
               nd=nd*(c+1);
               p=p*v[i];
               s=s*(p-1)/(v[i]-1);
              }  
           }
           }
        printf("%li %li\n",nd,s%9973);   
        
      }
   return 0;
   
  }