Pagini recente » Cod sursa (job #1955926) | Cod sursa (job #1657266) | Cod sursa (job #2790598) | Cod sursa (job #1536093) | Cod sursa (job #3327828)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("ssnd.in");
ofstream out("ssnd.out");
const int NMAX = 1e6;
const long long MOD = 9973;
long long prim[80000];
int m;
bool ciur[NMAX+1];
void descompunere_factori(long long x)
{
long long sum=1, nr=1, exp, fact=1;
for(int i=1; i<=m && x>1; i++)
{
if(x%prim[i] == 0)
{
fact = 1;
exp = 0;
while(x%prim[i] == 0)
{
x /= prim[i];
fact *= prim[i];
exp++;
}
nr *= (exp+1);
sum *= (fact*prim[i]-1)/(prim[i]-1);
sum %= MOD;
}
if(x>1 && prim[i]*prim[i] > x)
{
nr *= 2;
sum *= (x+1);
sum %= MOD;
out<<nr<<" "<<sum<<"\n";
return;
}
}
out<<nr<<" "<<sum<<"\n";
}
int main()
{
int i, j, t;
ciur[0]=ciur[1]=1;
for(i=4; i<=NMAX; i += 2)
{
ciur[i]=1;
}
for(i=3; i*i<=NMAX; i += 2)
{
if(ciur[i]==0)
{
for(j=i*i; j<=NMAX; j += i*2)
{
ciur[j]=1;
}
}
}
prim[++m] = 2;
for(i=3; i<=NMAX; i += 2)
{
if(ciur[i] == 0)
{
prim[++m] = i;
}
}
in>>t;
for(i=1; i<=t; i++)
{
long long x;
in>>x;
descompunere_factori(x);
}
return 0;
}