Pagini recente » Cod sursa (job #3131903) | Cod sursa (job #2909294) | Cod sursa (job #3232365) | Cod sursa (job #3173610) | Cod sursa (job #2497878)
#include <iostream>
#include <fstream>
using namespace std;
bool pr[1000001];
int putere (int x, int e)
{
if(e==0) return 1;
else
{
if(e%2==0) return putere(x*x, e/2);
else return x * putere(x*x, e/2);
}
}
int prim[80000];
int main()
{
ifstream fin ("ssnd.in");
ofstream fout ("ssnd.out");
short n;
int i, z, p, e, aux;
long long x, nrdiv, suma;
bool ok;
aux=0;
for(i=2; i*i<=1000000; i++)
{
if(pr[i]==0)
{
aux++;
prim[aux]=i;
for(z=i*i; z<=1000000; z=z+i) pr[z]=1;
}
}
fin>>n;
for(i=1; i<=n; i++)
{
fin>>x;
nrdiv=1;
suma=1;
p=1;
ok=0;
while(x!=1 && p<=aux)
{
if(x%prim[p]==0) ok=1;
e=0;
while(x%prim[p]==0)
{
x=x/prim[p];
e++;
}
nrdiv=nrdiv*(e+1);
suma=suma * (putere( prim[p], e+1)-1) / (prim[p]-1);
p++;
}
if(ok==0) fout<<2<<' '<<x+1<<"\n";
else fout<<nrdiv<<' '<<suma%9973<<"\n";
}
}