Cod sursa(job #2134506)

Utilizator AndrulianDin Iulian Andrulian Data 18 februarie 2018 00:02:38
Problema Suma si numarul divizorilor Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <iostream>
#include <fstream>
#include <math.h>
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
void nr_divizori(long long y)
{
    int d=2,e=0,nrdiv=1;
    while(y!=1)
    {
        e=0;
        while(y % d==0)
        {
            ++e;
            y/=d;
        }
        ++d;
        if(e) nrdiv=nrdiv*(e+1);
        if(y >1  && d*d > y )d = y;

    }
    fout<<nrdiv<<" ";
}
int i,t;
int suma_divizori(long long y)
{
    long long s=1+y;
    for(i=2; i<=sqrt(y); i++)
    {
        if(y % i== 0)
        {
            if(i * i == y )
                s=s+i;
            else s=s+i+y/i;
        }
    }
    return s;
}
long long x;
int main()
{
    fin>>t;
       while(t--)
    {
        fin>>x;
        nr_divizori(x);
        fout<<suma_divizori(x)<<"\n";
    }
    return 0;
}