Cod sursa(job #2793316)

Utilizator alexdraguAlexandru Dragu alexdragu Data 3 noiembrie 2021 14:26:55
Problema Suma si numarul divizorilor Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <fstream>

using namespace std;
ifstream cin("ssnd.in");
ofstream cout("ssnd.out");
int c[1000001],d[1000001];
long long n,i,f,p,p1,j,x,nr,s,nr1;
int main()
{
    c[1]=1;
    c[0]=1;
    for(i=2;i<=1000000;i++)
        if(c[i]==0)
        for(j=i*i;j<=1000000;j+=i)
        c[j]=1;
    for(i=2;i<=1000000;i++)
    if(c[i]==0) {nr1++;d[nr1]=i;}
    cin>>n;
    for(i=1;i<=n;i++)
    {
        cin>>x;nr=1;s=1;
        f=1;
        while(d[f]*d[f]<=x)
        {
            p=0;p1=1;
            while(x%d[f]==0)
            {
                p++;
                x/=d[f];
                p1*=d[f];
            }
            if(p!=0)
            {
                nr*=(p+1);
                s*=((p1*d[f]-1)/(d[f]-1));
            }
            f++;
        }
        if(x>1) {nr*=2;s*=((x*x-1)/(x-1));}
        cout<<nr<<' '<<s<<'\n';
    }
    return 0;
}