Pagini recente » Cod sursa (job #854505) | Cod sursa (job #1976507) | Cod sursa (job #3002183) | Cod sursa (job #1500354) | Cod sursa (job #631588)
Cod sursa(job #631588)
#include<iostream>
#include<fstream>
#include<cmath>
#define max 1000000
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
int a[max+1],p[100000];
void ciur()
{
int i,j;
a[1]=1;
for (i=2; i<=1000; i++)
if (a[i]==0)
for (j=2; j<=max/i; j++)
a[i*j]=1;
p[0]=0;
for (i=2; i<=max; i++)
if (a[i]==0)
{
p[0]+=1;
p[p[0]]=i;
}
}
void nr_sum_div(int n)
{
int i=1,e,nr=1,s=1;
while (p[i]<=sqrt(n))
if (n%p[i]==0)
{
e=0;
while (n%p[i]==0)
{
e++;
n=n/p[i];
s*=p[i];
}
nr*=(e+1);
s=(s*p[i]-1)/(p[i]-1);
i++;
}
else i++;
if(n>1)
{
nr*=2;
s*=(n+1);
}
g<<nr<<' '<<s<<'\n';
}
int main()
{
int i,t,n;
ciur();
f>>t;
for (i=1;i<=t;i++)
{
f>>n;
nr_sum_div(n);
}
f.close();
g.close();
}