Cod sursa(job #2033895)

Utilizator cezaradaDanciu Ana Cezara cezarada Data 7 octombrie 2017 11:43:22
Problema Fractii Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#include <fstream>

using namespace std;
ifstream in("fractii.in");
ofstream out("fractii.out");

int fi(int n){
    int ans = n;
    int cop = n;
    if(cop % 2 == 0){
        ans /= 2;
        while(cop % 2 == 0) cop /= 2;
    }

    int d = 3;
    while(d*d <= cop){
        if(cop % d == 0){
            ans /= d;
            ans *= d - 1;
            while(cop % d == 0) cop /= d;
        }
        d += 2;
    }

    ans /= cop;
    if(cop != 1) ans *= cop - 1;

    return ans;
}

int main()
{
    int n, s = 1;
    in >> n;
    for (int i = 2; i <= n; i++)
    {
        s += fi(i) * 2;
    }
    out << s;
    return 0;
}