Cod sursa(job #2192159)

Utilizator mihaicosmin2011Mihai Cosmin mihaicosmin2011 Data 4 aprilie 2018 21:01:28
Problema Suma si numarul divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include <bits/stdc++.h>
using namespace std;
long long n, x, i;
int sum_div(int a)
{
    int d;
    long long s = 0;
    for(d=1;d*d<a;d++)
        if(a%d==0) s=s+d+a/d;
    if(d*d==a) s=s+d;
    return s;
}
long long nrdiv(long long numar)
{
    long long k, ct = 0;
    for(k = 2; k * k <= numar; k ++)
        if(numar % k == 0) ct ++;
    ct = ct * 2;
    if(k * k == numar) ct ++;
    return ct;
}
bool numarPrim(long long numar)
{
    if(numar < 2)  return false;
    if(numar == 2) return true;
    for(int i = 2; i <= numar / 2; i++)
        if(numar % i == 0)  return false;
    return true;
}
int main()
{
    ifstream fin("ssnd.in");
    ofstream fout("ssnd.out");
    fin >> n;
    for(i = 1; i <= n; i ++)
     {
         fin >> x ;
         if(numarPrim(x))
         {
             fout << 2 << " " << x+1;
             fout << endl;
         }
     else fout << nrdiv(x) +2 << " " << sum_div(x);
     fout << endl;
     }
    return 0;
}