Cod sursa(job #455995)

Utilizator emanuela.hallerHaller Emanuela emanuela.haller Data 14 mai 2010 18:02:18
Problema Suma si numarul divizorilor Scor 70
Compilator c Status done
Runda Arhiva educationala Marime 0.98 kb
#include<stdio.h>

#define MAX 1000000

int main()
  {
   freopen("ssnd.in","r",stdin);
   freopen("ssnd.out","w",stdout);
   
   long long i,j,n,nd,s,c,p;
   int t;
   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;
       }   

   scanf("%i",&t);
   
   for(;t;--t)
      {
        scanf("%lli",&n); 
        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;
   
  }