Cod sursa(job #2916257)

Utilizator daniel23Malanca Daniel daniel23 Data 28 iulie 2022 18:04:20
Problema Fractii Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <fstream>

std::ifstream in("fractii.in");
std::ofstream out("fractii.out");

int64_t sieve[1000001], sievetot[1000001];

int main() {
    int64_t x;
    in >> x;
    for (int i = 2; i <= x; i++) sievetot[i] = i;
    for (int i = 2; i * i <= 1000000; i++)
        for (int j = 2 * i; j <= 1000000; j += i) sieve[j] = 1;

    for (int i = 2; i <= x; i++) {
        if (!sieve[i]) {
            for (int j = i; j <= 1000000; j += i) {
                sievetot[j] *= i - 1;
                sievetot[j] /= i;
            }
        }
    }
    int64_t answer = 1;
    for (int64_t i = 2; i <= x; i++) answer += 2 * sievetot[i];

    out << answer;
}