Pagini recente » Cod sursa (job #2599061) | Cod sursa (job #1339767) | Cod sursa (job #2196035) | Monitorul de evaluare | Cod sursa (job #2982106)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
bool v[1000001];
int main()
{
long long int n, x, nr_putere = 0, numar_div = 1, suma_divizori = 1, produs1 = 1, copie;
v[0] = v[1] = true;
for(int i = 4; i <= 1000001; i += 2)
{
v[i] = true;
}
for(long long int i = 3; i <= 1000001/2; i += 2)
{
for(long long int j = i * i; j <= 1000001; j = j + 2 * i)
v[j] = true;
}
fin >> n;
for(long long int i = 1; i <= n; i++)
{
fin >> x;
numar_div = 1;
suma_divizori = 1;
if(v[x] == false)
{
fout << 2 <<" " << x+1 <<'\n';
}
else
{
for(long long int j = 1; j * j <= x; j++)
{
copie = x;
if(v[j] == false && copie % j == 0)
{
nr_putere = 0;
while(copie % j == 0)
{
nr_putere++;
copie = copie / j;
}
numar_div = numar_div * (nr_putere + 1);
produs1 = 1;
while(nr_putere + 1)
{
produs1 = produs1 * j;
nr_putere--;
}
suma_divizori =suma_divizori * ((produs1 - 1) / (j - 1));
}
}
fout << numar_div << " " << suma_divizori <<'\n';
}
}
}