Cod sursa(job #2774273)

Utilizator amcbnCiobanu Andrei Mihai amcbn Data 10 septembrie 2021 19:55:53
Problema Fractii Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
/* [A][M][C][B][N] / [K][R][I][P][6][8] */
#include <bits/stdc++.h>
#pragma warning(disable : 4996)
using namespace std;
// Global variables
const char sp = ' ', nl = '\n';
const int MOD = 777013; // 666013 998244353 1000000007
ifstream fin("fractii.in");
ofstream fout("fractii.out");

int E[1000001] = {0};
int P[78498], idx(0);
void Eratostene() {
    E[1] = 1;
    for (int i = 2; i <= 1e6; i++) {
        if (!E[i]) {
            P[idx++] = i;
            for (int j = 2; j <= 1e6 / i; j++)
                E[i * j] = 1;
        }
    }
}

int phi(int n) {
    double p(n);
    for (int i = 0; i < 78498; i++) {
        if (P[i] > n) break;
        if (n % P[i] == 0)
            p = p * (P[i] - 1) / P[i];
    }
    return round(p);
}

int main() {
    Eratostene();
    long long s(1);
    int n;
    fin >> n;
    for (int i = 2; i <= n; i++)
        s += 2ll * phi(i);
    fout << s;
}