Pagini recente » Cod sursa (job #1343438) | Cod sursa (job #548021) | Cod sursa (job #965820) | Cod sursa (job #1784582) | Cod sursa (job #1582124)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("ssnd.in");
ofstream fout ("ssnd.out");
int a[1000005];
int maxim=1000005;
void ciur ()
{
for (int i=2;i<=maxim;i++)
a[i]=1;
for (int i=2;i<=maxim;i++)
{
if (a[i]!=0)
for (int j=i+i;j<=maxim;j+=i)
a[j]=0;
}
}
int putere (int x, int y)
{
int p=1;
for (int i=1;i<=y;i++)
p*=x;
return p;
}
int main()
{
int t,nr,s,d,p;
long long int n;
ciur();
fin>>t;
for (int i=1;i<=t;i++)
{
fin>>n;
if (a[n]==1)
fout<<"2 "<<1+n<<"\n";
else
{
nr=1;
s=1;
p=0;
while (n%2==0)
{
n/=2;
p++;
}
nr*=p+1;
if (p!=0)
s*=putere (2,p+1)-1;
d=3;
while (n!=1)
{
p=0;
while (n%d==0)
{
n/=d;
p++;
}
nr*=p+1;
if (p!=0)
s*=(putere (d,p+1)-1) / (d-1);
}
fout<<nr<<" "<<s%9973<<"\n";
}
}
return 0;
}