Cod sursa(job #1914189)

Utilizator PopeangaMihneaPopeanga Mihnea- Stefan PopeangaMihnea Data 8 martie 2017 15:54:37
Problema Suma si numarul divizorilor Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 1.25 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
int t, i, d, n, ndiv, s, e, p;
bool ciur[1000001];
int main()
{
    for(d=2; d*d<=1000001; ++d)
    {
        if(ciur[d]==0)
        {
            for(i=d*d; i<=1000001; i=i+d) ciur[i]=1;
        }
    }
    fin>>t;
    for(i=1; i<=t; ++i)
    {
        fin>>n;
        if(ciur[n]==0) fout<<"2"<<" "<<(n+1)%9973<<"\n";
        else
        {
            d=2;
            ndiv=1;
            s=1;
            while(d*d<=n)
            {
                if(ciur[d]==0)
                {
                    e=0;
                    p=1;
                    while(n%d==0)
                    {
                        ++e;
                        p=p*d;
                        n=n/d;
                    }
                    if(e>0)
                    {
                        ndiv=ndiv*(e+1);
                        s=s*((p*d-1)/(d-1))%9973;
                    }
                }
                ++d;
            }
            if(n>1)
            {
                ndiv=ndiv*2;
                s=s*((n*n-1)/(n-1))%9973;
            }
            fout<<ndiv<<" "<<s<<"\n";
        }
    }
    return 0;
}