Cod sursa(job #1006610)

Utilizator Alexa2001Alexa Tudose Alexa2001 Data 7 octombrie 2013 14:44:36
Problema Suma si numarul divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <fstream>

using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
int i,j,nr,p[100000],nrr,nre,t;
long long n,s,b;
bool ok;
int main()
{
    f>>t;
    p[1]=2;
    nr=1;
    for(i=3; i<=999999; i+=2)
    {
        ok=true;
        for(j=1; j<=nr && p[j]*p[j]<=i; ++j )
            if(i%p[j]==0)
            {
                ok=false;
                break;
            }
        if(ok) p[++nr]=i;
    }

    for(i=1; i<=t; ++i)
    {
        f>>n;
        nre=1;
        s=1;
        for(j=1; j<=nr && n>1; ++j)
        {
            b=p[j];
            nrr=1;
            while(n%p[j]==0)
            {
                n/=p[j];
                b*=p[j];
                ++nrr;
            }
            nre*=nrr;
            s=s*(b-1)/(p[j]-1);
        }
        g<<nre<<" "<<s<<'\n';
    }



    return 0;
}