Cod sursa(job #592957)

Utilizator carbonixVictor Carbune carbonix Data 31 mai 2011 17:20:53
Problema Fractii Scor 30
Compilator c Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <stdio.h>

unsigned long totient(unsigned long n)
{
    unsigned long result, i;

    result = n;

    for (i = 2; i * i <= n; i++) {
        if (n % i == 0)
            result -= result / i;

        while (n % i == 0) {
            n /= i;
        }
    }

    if (n > 1) result -= result / n;

    return result;
}

int main() {
    FILE *fin = fopen("fractii.in", "r");
    FILE *fout = fopen("fractii.out", "w");
    unsigned long n, i, result = 0;

    fscanf(fin, "%ld", &n);

    for (i = 2; i <= n; i++) {
        result += totient(i);
    }

    result = result * 2 + 1;

    fprintf(fout, "%ld\n", result);

    fclose(fin);
    fclose(fout);

    return 0;
}