Cod sursa(job #455994)

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

int main()
  {
   freopen("ssnd.in","r",stdin);
   freopen("ssnd.out","w",stdout);
   long long i,j;
   char prim[1000005];
   
   for(i=2;i<=1000000;i++)
      prim[i]=1;
      
   for(i=2;i*i<=1000000;i++)
     if (prim[i])
       {
        for(j=i+i;j<=1000000;j+=i)
           prim[j]=0;
       }   

   int t;
   long long n,m,nd,s,c,p;
   
   scanf("%i",&t);
   
   for(;t;--t)
      {
        scanf("%lli",&n); 
        if (prim[n])      
          {
           nd=2;
           s=n+1;
           }
        else
          {   
        nd=1; s=1;
        i=2;
        while (n>1)
           {
            while (prim[i]==0) i++;
            c=0; p=1;
            while (n%i==0)
                {
                 c++;
                 n/=i;
                 p*=i;
                }    
            if(c!=0)
              {
               p=p*i;
               nd=nd*(c+1);
               s=s*(p-1)/(i-1);
              }           
            i++;   
           }
           }
        printf("%lli %lli\n",nd,s%9973);   
        
      }
   return 0;
   
  }