Cod sursa(job #1926702)

Utilizator teodorgTeodor G teodorg Data 14 martie 2017 17:00:10
Problema Suma si numarul divizorilor Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.13 kb
#include <bits/stdc++.h>
#define tip long long
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
void ciur();
tip t,n,sd,nd,i,e,q,sp,vp,k,j,p[1000010];
int main()
{
    ciur();
    f>>t;
    for(; t; t--)
    {
        f>>n;
        sd=1;nd=1;
        for(i=1; p[i]*p[i]<=n; i++)
            if(n%p[i]==0)
            {
                e=1;
                q=p[i];
                sp=1;
                vp=1;
                while(n%q==0)
                {
                    e++;
                    vp*=q;
                    sp+=vp;
                    n/=q;
                }
                sd*=sp;
                nd*=e;
            }
        if(n>1)
        {
            sd*=1+n;
            nd*=2;
        }
        g<<nd<<' '<<sd<<'\n';

    }
    return 0;
}
void ciur()
{
    k=1;
    p[k]=2;
    for(i=3; i<=1000; i+=2)
        if(!p[i])
        {
            k++;
            p[k]=i;
            for(j=i*i; j<=1000000; j+=2*i)
                p[j]=1;
        }
    for(; i<=1000000; i+=2)
        if(!p[i])
        {
            k++;
            p[k]=i;
        }
}