Cod sursa(job #1827232)

Utilizator AndreiMaximIonutMaxim Andrei AndreiMaximIonut Data 11 decembrie 2016 16:55:55
Problema Suma si numarul divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>

using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
//#define Nmax 1000001
int t;
//char v[Nmax]
long long n;
/*void ciur(char *v)
{
    long i,j;
    v[0]=v[1]=1;
    for(i=2;i*i<=Nmax;i++)
        if(v[i]==0)
          for(j=i;j*i<=Nmax;j++)
             v[i*j]=1;
}*/
int nrd(long long x)
{
    long long d=2,nr=1;
    while(d*d<=x)
    {
        if(x%d==0)
        {
            long e=0;
            while(x%d==0)
                e++,x/=d;
            nr=nr*(e+1);
        }
        d++;
    }
    if(x>1) nr*=2;
    return nr;
}

long long sd(long long x)
{
    long long s=0,i;
    for(i=1;i*i<x;i++)
        s=s+i+x/i;
    if(i*i==x)
        s=s+i;
    return s;
}
int main()
{
    fin>>t;
    while(t)
    {
        fin>>n;
        fout<<nrd(n)<<' '<<sd(n)<<endl;
        t--;
    }
    return 0;
}