Pagini recente » Cod sursa (job #1382693) | Cod sursa (job #20029) | Cod sursa (job #204073) | Cod sursa (job #1731880) | Cod sursa (job #188740)
Cod sursa(job #188740)
#include <stdio.h>
/*
* 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[])
{
int i, j;
for (i = 1; i < 200001; ++i)
phi[i] = i;
for (i = 2; i < 200001; ++i)
if (phi[i] == i)
for (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;
}