Pagini recente » Cod sursa (job #3228132) | Cod sursa (job #1109275) | Cod sursa (job #1827501) | Cod sursa (job #1417267) | Cod sursa (job #2203242)
#include <iostream>
#include <fstream>
#include <math.h>
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
long long sdv,nrdiv;
void suma_divizori(long long y, long long &nrdiv ,long long &sdv)
{
int d=2,e=0;
long long p=1,p1=1,p2=1;
nrdiv=1;
while(y!=1)
{
e=0;
if(y%d==0)p=d;
while(y % d==0)
{
++e;
y/=d;
p=p*d;
}
if(e){p1=p1*(p-1);
p2=p2*(d-1);
}
if(e) nrdiv=nrdiv * ( e + 1);
d++;
if(y > 1 && d * d > y )d = y;
}
sdv=(p1/p2)%9973;
}
int i,t;
long long x;
int main()
{
fin>>t;
while(t--)
{
fin>>x;
suma_divizori(x,nrdiv, sdv);
fout<<nrdiv<<" "<<sdv<<'\n';
}
return 0;
}