Cod sursa(job #1973142)

Utilizator RaresEGaySopterean Adrian RaresEGay Data 24 aprilie 2017 17:20:04
Problema Fractii Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>
#include <math.h>

#define MAXN 1000005

using namespace std;

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

int n;
int c[MAXN];

int phi(int x)
{
    double result = x;
    for (int p = 2; p * p <= x; ++p){
        if (x % p == 0){
            while (x % p == 0)
                x /= p;
            result -= result / p;
        }
    }
    if (x > 1){
        result -= result / x;
    }

    return result;
}
int main(){
    f >> n;
    for(int i = 2; i <= n; ++i){
        if(!c[i]){
            for(int j = 2 * i; j <= n; j += i)
                c[j] = 1;
        }
    }
    long long sol = 1;
    for(int i = 2; i <= n; ++i){
        if(!c[i]) sol += 2 * (i - 1);
        else sol += 2 * phi(i);
    }

    g << sol << '\n';
}