Cod sursa(job #862995)

Utilizator Walrus21andrei Walrus21 Data 23 ianuarie 2013 09:53:16
Problema Suma si numarul divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <stdio.h>
#include <math.h>

using namespace std;

FILE *f=fopen("ssnd.in","r");
FILE *g=fopen("ssnd.out","w");

int i,t,j,n,aux,p,d,s,nd,v[1000000];

int ciur()
{
    for(int i=1;i<=1000000;i++)
     v[i]=1;
    for(int i=2;i<1000000;i++)
     if(v[i]==1)
      for(int j=i+i;j<=1000000;j+=i)
       v[j]=0;
    return 0;
}

int main()
{
    ciur();
    fscanf(f,"%d",&t);
    for(i=1;i<=t;i++)
    {
        fscanf(f,"%d",&n);
        nd=1;
        s=1;
        aux=n;
        for(j=2;j<=sqrt(n);j++)
        {
          p=1;
          d=0;
          if(v[j]==1)
          while(aux%j==0)
          {
              aux=aux/j;
              p=p*j;
              d+=1;
          }
          nd=nd*(d+1);
          s=s*(p*j-1)/(j-1);
        }
        if(nd!=1) fprintf(g,"%d %d\n",nd,s);
        else fprintf(g,"2 %d",n+1);
    }
    fclose(g);
    return 0;
}