Pagini recente » Cod sursa (job #2898117) | Cod sursa (job #1508313) | Cod sursa (job #185) | Cod sursa (job #1803409) | Cod sursa (job #764300)
Cod sursa(job #764300)
#include<fstream.h>
#include<math.h>
bool a[1000001];
int p[78499],k=0;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
using namespace std;
void ciur()
{
for(int i=2;i<=1000000;i++)
if(a[i]==false)
{
p[++k]=i;
for(int j=i+i;j<=1000000;j+=i)
a[j]=true;
}
}
int putere(int baza, int exp)
{
int rez=1;
while(exp)
{
if(exp%2)
rez*=baza;
baza*=baza;
exp/=2;
}
return rez;
}
int main()
{
int t,x,s,nr,d,n,ok;
ciur();
f>>t;
while(t--)
{
ok=1;
s=nr=1;
f>>x;
if(a[x]==0)
{
g<<2<<" "<<x+1<<"\n";
ok=0;
}
n=sqrt(double(x));
for(int i=1;i<=n && ok;i++)
{
d=0;
while(x%p[i]==0 && x)
{
d++;
x=x/p[i];
}
nr=nr*(d+1);
s=s*((putere(p[i],d+1)-1)/(p[i]-1));
}
if(ok)
g<<nr<<" "<<s<<"\n";
}
f.close();
g.close();
return 0;
}