Pagini recente » Cod sursa (job #2430503) | Cod sursa (job #723205) | Cod sursa (job #298259) | Cod sursa (job #1109970) | Cod sursa (job #188737)
Cod sursa(job #188737)
#include <iostream>
#include <fstream>
using namespace std;
/*
* O problema complicata,
* De matematica rezolvata,
* C-o formula foarte simpla,
* Nu rima!
*
* solutie = 2 * phi(X) - X
* unde
* X = numarul dat in enunt
* phi(X) = functia phi a lui Euler (ie numarul
* de numere prime cu X mai mici ca X)
*/
int N, X;
long long phi[200001];
int main(int argc, char *argv[])
{
for (int i(1); i < 200001; ++i)
phi[i] = i;
for (int i(2); i < 200001; ++i)
if (phi[i] == i)
for (int j = i; j < 200001; j += i) {
phi[j] /= i;
phi[j] *= i-1;
}
FILE *fi = fopen("sum.in", "r");
fscanf(fi, "%d", &N);
FILE *fo = fopen("sum.out", "w");
while (N--) {
fscanf(fi, "%d", &X);
fprintf(fo, "%lld\n", 2*phi[X]*X);
}
fclose(fo);
fclose(fi);
return 0;
}