Cod sursa(job #1375911)

Utilizator tudor00Stoiean Tudor tudor00 Data 5 martie 2015 14:59:50
Problema Suma si numarul divizorilor Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#include <fstream>
#include <cmath>
#define NMAX 1000000
using namespace std;

ifstream in("ssnd.in");
ofstream out("ssnd.out");

long long k,x,cx,n;

    bool q[NMAX+10];
    int ciur[NMAX],i,j,cntciur=0;


int main()
{
    in>>n;
    q[1]=1;
    for(i=2;i*i<=NMAX;i++)
    {
        if(q[i]==0)
        {
            for(j=i*i;j<=NMAX;j+=i)
            {
                q[j]=1;
            }
        }
    }
    for(i=1;i<=NMAX;i++)
    {
        if(q[i]==0)
        {
            cntciur++;
            ciur[cntciur]=i;
        }
    }
    for(k=1;k<=n;k++)
    {
        in>>x;
        long long cx=x,prod2=1,prod=1,nr=1;
        while(cx!=1)
        {
            int put=0;

            while(cx%ciur[nr]==0)
            {
                ++put;
                cx=cx/ciur[nr];
            }
            prod=prod*(pow(ciur[nr],put+1)-1)/(ciur[nr]-1);
            prod2=prod2*(put+1);
            nr++;
        }
        out<<prod2<<" "<<prod<<'\n';
    }
    in.close();
    out.close();
    return 0;
}