Pagini recente » Cod sursa (job #2947545) | Cod sursa (job #3282371) | Borderou de evaluare (job #1036561) | Cod sursa (job #1050468) | Cod sursa (job #2497914)
#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, cp;
bool ok;
aux=0;
for(i=2; i*i<=1000000; i++)
{
if(pr[i]==0)
{
for(z=i*i; z<=1000000; z=z+i) pr[z]=1;
}
}
for(i=2; i<=1000000; i++)
{
if(pr[i]==0)
{
aux++;
prim[aux]=i;
}
}
fin>>n;
for(i=1; i<=n; i++)
{
fin>>x;
nrdiv=1;
suma=1;
cp=x;
for(z=1; prim[z]*prim[z] <= cp && x!=1; z++)
{
//cout<<"z= "<<z<<"\nprim["<<z<<"]= "<<prim[z]<<"\n";
e=0;
while(x%prim[z]==0)
{
x=x/prim[z];
e++;
}
nrdiv=nrdiv*(e+1);
suma=suma * (putere(prim[z], e+1)-1) / (prim[z]-1);
}
if(x!=1)
{
nrdiv=2;
suma=x+1;
}
//cout<<"\n";
fout<<nrdiv<<' '<<suma%9973<<"\n";
}
}