Pagini recente » Cod sursa (job #2595165) | Cod sursa (job #140074) | Cod sursa (job #1846374) | Cod sursa (job #358415) | Cod sursa (job #2499379)
#include <iostream>
#include <fstream>
using namespace std;
bool pr[1000001];
int numar[78500];
long long 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 main()
{
ifstream fin ("ssnd.in");
ofstream fout ("ssnd.out");
//cout<<"putere(2, 4)= "<<putere(2, 4)<<"\n";
int n, i, z, e, cp, aux, nrdiv;
long long x, suma;
fin>>n;
for(i=2; i*i<=1000000; i++)
{
if(pr[i]==0)
{
for(z=i*i; z<=1000000; z=z+i) pr[z]=1;
}
}
aux=0;
for(i=2; i<=1000000; i++)
{
if(pr[i]==0)
{
aux++;
numar[aux]=i;
}
}
for(i=1; i<=n; i++)
{
fin>>x;
cp=x;
suma=1;
nrdiv=1;
aux=1;
e=0;
while(x!=1 && numar[aux] <=x)
{
e=0;
while(x% numar[aux]==0 && x!=1)
{
x=x/numar[aux];
e++;
}
if(e!=0)
{
nrdiv=nrdiv* (e+1);
suma=suma * ( ( (putere(numar[aux], e+1)-1) / ( numar[aux]-1) ) %9973 ) %9973;
}
//cout<<"( ( (putere("<<numar[aux]<<", "<<e+1<<")-1) / ( "<<numar[aux]<<"-1) ) %9973 ) %9973 = "<<( ( (putere(numar[aux], e+1)-1) / ( numar[aux]-1) ) %9973 ) %9973<<"\n";
//cout<<"e= "<<e<<"\naux= "<<aux<<"\nnumar["<<aux<<"]= "<<numar[aux]<<"\n\n";
aux++;
}
if(x!=1)
{
fout<<2<<' '<<cp+1<<"\n";
}
else
{
fout<<nrdiv<<' '<<suma<<"\n";
}
}
}