Cod sursa(job #2690220)

Utilizator UnknownPercentageBuca Mihnea-Vicentiu UnknownPercentage Data 23 decembrie 2020 14:03:44
Problema Fractii Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f("fractii.in");
ofstream g("fractii.out");

long long sum;
int n;

int Phi(int n){

    if(n == 1) return n;

    int nr = n;

    if (n % 2 == 0){
        nr = nr / 2;
        while (n % 2 == 0) n /= 2;
    }
    if (n % 3 == 0){
        nr = nr / 3 * 2;
        while (n % 3 == 0) n /= 3;
    }

    for (int d = 5;n > 1 && d * d <= n;d += 6)
    {
        if (n % d == 0){
            nr = nr / d * (d - 1);
            while (n % d == 0) {n /= d;}
        }
        if (n % (d + 2) == 0){
            nr = nr / (d + 2) * (d + 1);
            while (n % (d + 2) == 0) n /= (d + 2);
        }
    }

    if (n > 1) {nr = nr / n * (n - 1);}
    return nr;
}

int main(){

    f >> n;
    for(int i = 1;i <= n;i++)
        sum += Phi(i);
    g << 2 * sum - 1;

}