Pagini recente » Cod sursa (job #476707) | Cod sursa (job #2701) | Cod sursa (job #2095563) | Cod sursa (job #1536243) | Cod sursa (job #1757086)
#include <fstream>
#include <cmath>
using namespace std;
ifstream in("ssnd.in");
ofstream out("ssnd.out");
int prim(int x)
{
int i;
if (x<2) return false;
if (x==2) return true;
if (x%2==0) return false;
for (i=3; i*i<=x; i=i+2)
if (x%i==0) return false;
return true;
}
int suma_div(int x)
{
int d=2, k=0, nrdiv=1, S=1, y;
if (prim(x))
{
return x+1;
}
while (x!=1)
{
x=x/d;
k++;
y=k+1;
if (x%d!=0)
{
S=S*(pow(d, y)-1)/(d-1);
nrdiv=nrdiv*y;
if (d==2) d++;
else
d=d+2;
k=0;
}
}
return S;
}
int nr_div(int x)
{
if (prim(x)) return 2;
int d=2, k=0, nrdiv=1, S=1;
while (x!=1)
{
x=x/d;
k++;
if (x%d!=0)
{
nrdiv=nrdiv*(k+1);
if (d==2) d++;
else
d=d+2;
k=0;
}
}
return nrdiv;
}
int main()
{
int n, x, i;
in>>n;
for (i=1; i<=n; i++)
{
in>>x;
out<<nr_div(x)<<' '<<suma_div(x)<<'\n';
}
return 0;
}