Pagini recente » Cod sursa (job #1151297) | Cod sursa (job #2284355) | Cod sursa (job #1217548) | Cod sursa (job #657936) | Cod sursa (job #1463879)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin ("sum.in");
ofstream fout ("sum.out");
int N, X_1, X_2, F[200010];
vector < int > P;
bool viz[200010];
void Eratostene()
{
P.push_back(2);
for (int i = 2; i <= 2000; i += 2) viz[i] = true;
for (int i = 3; i <= 2000; i += 2)
{
if (!viz[i])
{
P.push_back(i);
for (int j = i * 3; j <= 2000; j += i)
{
viz[j] = true;
}
}
}
}
int main()
{
Eratostene();
fin >> N;
for (int i = 1; i <= N; i++)
{
fin >> X_1;
X_2 = X_1 * 2;
int sum = (X_2 * (X_2 + 1)) / 2;
vector < int > D;
int p = 0;
while (X_1 != 1 && p < P.size())
{
if (X_1 % P[p] == 0)
{
for (int j = P[p]; j <= X_2; j += P[p])
{
if (F[j] != i)
{
sum -= j;
F[j] = i;
}
}
while (X_1 % P[p] == 0)
{
X_1 /= P[p];
}
}
p ++;
}
if (X_1 != 1)
{
for (int j = X_1; j <= X_2; j += X_1)
{
if (F[j] != i)
{
sum -= j;
F[j] = i;
}
}
}
fout << sum << '\n';
}
return 0;
}