Pagini recente » Statistici Matracaru Cristiana Ilinca (Matracaru) | Istoria paginii utilizator/georgianaelena | Istoria paginii utilizator/gianniy | Cod sursa (job #874876) | Cod sursa (job #1986618)
#include <iostream>
#include <cmath>
#include <fstream>
using namespace std;
int FactPrim(int x)
{
int nr=1,d=3,p=0,r;
while(x%2==0)
{
x/=2;
p++;
}
nr*=p+1;
r=sqrt(x);
while(d<=r)
{
p=0;
while(x%d==0)
{
p++;
x/=d;
}
if(p)
{
nr*=p+1;
r=sqrt(x);
}
d+=2;
}
if(x!=1) nr*=2;
return nr;
}
int Sdiv(int x)
{
if(x==1) return 1;
int s=1,d=3,p=0,r,prod;
while(x%2==0)
{
x/=2;
p++;
}
if(p)
{
p++;
while(p)
{
s*=2;
p--;
}
s--;
p=1;
}
r=sqrt(x);
while(d<=r)
{
p=0;
prod=1;
while(x%d==0)
{
p++;
x/=d;
}
if(p)
{
p++;
r=sqrt(x);
while(p)
{
prod*=d;
p--;
}
prod=(prod-1)/(d-1);
s*=prod;
}
d+=2;
}
if(!p) s=x+1;
else
if(x!=1)
s*=(d*d-1)/(d-1);
return s;
}
int main()
{
ifstream f("ssnd.in");
ofstream g("ssnd.out");
int i,t,n,x;
f>>t;
for(i=1;i<=t;i++)
{
f>>n;
g<<FactPrim(n)<<" "<<Sdiv(n)<<"\n";
}
f.close();
g.close();
return 0;
}