Pagini recente » Clasament newcomers_3 | Cod sursa (job #1339739) | Monitorul de evaluare | Cod sursa (job #3245324) | Cod sursa (job #1224632)
#include <fstream>
#include <cmath>
#include <iostream>
#define SIZE 1000001
using namespace std ;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
char p[SIZE];
void calcul()
{
int i, j;
for (i = 2; i <= sqrt(SIZE); i++)
if (p[i] == 0)
for (j = i; j <= SIZE/i; j++)
p[i * j] = 1;
}
long long get_nr_sum(long long n)
{
long long i, nr, t, s, q;
t = 0;
s = nr = i = q = 1;
i = 2;
while (n > 1)
{
if (!p[i])
{
if (n % i == 0)
{
t++;
q *= i;
n /= i;
}
else
{
nr *= (t + 1);
q *= i;
s *= (q - 1) / (i - 1);
t = 0;
q = 1;
i++;
}
}
else
{
i++;
t = 0;
q = 1;
}
if (n == 1)
{
nr *= (t + 1);
q *= i;
s *= (q - 1) / (i - 1);
}
}
g << nr << ' ';
return (s);
}
void print_nr_sum()
{
int n;
long long aux;
f >> n;
for (int i = 1;i <= n; i++)
{
f >> aux;
g << get_nr_sum(aux) << '\n';
}
}
int main()
{
calcul();
print_nr_sum();
return 0 ;
}