Cod sursa(job #865520)

Utilizator roxannemafteiuMafteiu-Scai Roxana roxannemafteiu Data 26 ianuarie 2013 16:48:25
Problema Suma si numarul divizorilor Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.13 kb
#include <stdio.h>
#include<math.h>
FILE *in,*out;
using namespace std;
int t,i,c[1001],j,u,v[1001],n,poz,l,exponent,S;
double putere,prod,nr;
int main()
{
    in=fopen("ssnd.in","rt");
    out=fopen("ssnd.out", "wt");
    fscanf(in, "%d", &t);
    putere=sqrt(pow(10,6));
    for(i=2;i<=putere; i++)
          if (!c[i])
           { v[++u]=i;
               for (j=i+i; j<=putere; j+=i)
                   c[j]=1;
           }


    for (i=1 ; i<=t ; i++)
     {
         fscanf(in, "%d", &n);
         nr=1;
         prod=1;poz=1;
         while (n>1)
          {
              exponent=0;
              while (n%v[poz]==0)
                 {
                     n/=v[poz];
                     S+=v[poz];
                     exponent++;
                 }
                //calc nr de divizori
                if(exponent>=1)
                 nr*=(exponent+1);

                 //calc suma diviz
                 prod*=(pow(v[poz], exponent+1)-1)/(v[poz]-1);


                poz++;
          }
          fprintf(out, "%.lf %.lf\n", nr, prod);
     }


    fclose(in);
    fclose(out);
    return 0;
}