Cod sursa(job #2208797)

Utilizator Alex_BubBuburuzan Alexandru Alex_Bub Data 31 mai 2018 16:55:37
Problema Fractii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("fractii.in");
ofstream fout("fractii.out");

const int NMAX = 1000000;

long long phi[NMAX + 5];

int main()
{
    int n;

    fin >> n;

    fin.close();

    // phi(n) = n * ((p1 - 1) / p1) * ((p2 - 1) / p2) * ... * ((pn - 1) / pn);

    for(int i = 1; i <= n; i++) phi[i] = i;

    for(int i = 2; i <= n; i++) {
        if(phi[i] == i) {
            phi[i]--;

            for(int j = 2 * i; j <= n; j += i)
                phi[j] *= (i - 1), phi[j] /= i;
        }
    }

    long long sol = 0;

    for(int i = 1; i <= n; i++) sol += phi[i];

    fout << 2 * sol - 1;

    fout.close();

    return 0;
}