Pagini recente » Cod sursa (job #1187486) | Cod sursa (job #3205600) | Cod sursa (job #2146321) | Cod sursa (job #2686063) | Cod sursa (job #1879433)
#include <fstream>
#include <cmath>
#include <algorithm>
#define LMAX 1000005
using namespace std;
int prime[LMAX], L, n;
bool use[LMAX];
void eratothenes()
{
L = 0;
prime[L++] = 2;
for(int i = 3; i < LMAX; i += 2)
if(!use[i])
{
prime[L++] = i;
for(int j = 3 * i; j < LMAX; j += 2 * i)
use[j] = 1;
}
}
int main()
{
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
long long x;
eratothenes();
fin >> n;
while(n--)
{
fin >> x;
int nr = 1, s = 1, sqrtX = ceil(sqrt(x));
if(binary_search(prime, prime + L, x))
{
s = (s * (x + 1)) % 9973;
nr *= 2;
}
else
for(int i = 0; prime[i] <= sqrtX; i++)
if(x % prime[i] == 0)
{
long long aux = x;
int k = 0;
while(x % prime[i] == 0)
{
k++;
x /= prime[i];
}
aux /= x;
aux *= prime[i];
aux--;
s = (s * (aux / (prime[i] - 1))) % 9973;
nr *= k + 1;
sqrtX = ceil(sqrt(x));
}
fout << nr << " " << s << "\n";
}
fin.close();
fout.close();
return 0;
}