Cod sursa(job #2385368)

Utilizator albucristianAlbu Cristian-Gabriel albucristian Data 21 martie 2019 20:35:06
Problema Suma si numarul divizorilor Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.18 kb
#include <fstream>
#include <cmath>
using namespace std;
int v[1000002],ciur[1000002];
int main()
{
    int n,c,s,nr,x,a;
    ifstream in("ssnd.in");
    ofstream out("ssnd.out");
    for(int i=2;i<=1000000;i++)
    {
        if(v[i]==0)
        {
            for(int j=2*i;j<=1000000;j+=i)
            {
                v[j]=1;
            }
        }
    }
    c=0;
    for(int i=2;i<=1000000;i++)
    {
        if(v[i]==0)
            ciur[++c]=i;
    }
    in>>n;
    for(int i=1;i<=n;i++)
    {
        in>>x;
        if(v[x]==1)
        {
            int y=x;
            nr=s=1;
            for(int j=1;j<=c;j++)
            {
                if(ciur[j]*ciur[j]<=y)
                {
                    a=0;
                    while(x%ciur[j]==0)
                    {
                        x/=ciur[j];
                        a++;
                    }
                    nr=nr*(a+1);
                    s=s*((pow(ciur[j],a+1)-1)/(ciur[j]-1));
                }
                else
                    break;
            }
            out<<nr<<" "<<s<<"\n";
        }
        else
            out<<2<<" "<<x+1<<"\n";
    }
    return 0;
}