Cod sursa(job #2456794)

Utilizator eduardmirceabraguta eduard eduardmircea Data 15 septembrie 2019 14:46:07
Problema Suma si numarul divizorilor Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
#include <iostream>
#include <fstream>
#include <cmath>

using namespace std;
ifstream in ("ssnd.in");
ofstream out ("ssnd.out");

bool ciur[1000005];
int n,i,j,m,p[1000000],d,x;

int main()
{
    in>>n;
for ( d = 2; d * d <= 1000000; d++ )
  if ( ciur[d] == 0 )
    for ( i = d * d; i <= 1000000; i = i + d )
      ciur[i] = 1;

    j=1;
    for(i=2;i<=100000;i++)
    {if(ciur[i]==0)p[j++]=i;


    }
    m=j-1;
int u,nd,s;
for(i=1;i<=n;i++)
{in>>x;
j=1;nd=1;s=1;
int q=x;
d=p[1];
while(d*d<=q)
{u=0;
    while(x%d==0){x=x/d;u++;}
 nd=nd*(u+1);
s=s*(  (pow(d,(u+1))-1)/(d-1));
    j++;d=p[j];
}

if(x!=1){out<<2<<" "<<x+1<<"\n";}
else{out<<nd<< " "<<s<<"\n";}


}


return 0;
}