Cod sursa(job #2476830)

Utilizator AntoniuFicAntoniu Ficard AntoniuFic Data 19 octombrie 2019 11:44:34
Problema Fractii Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <iostream>
#include <fstream>

using namespace std;

long long n;
long long factoriPrimi(long long x){
    long long raspuns = x;
    if(!(x & 1))
        raspuns /= 2;
    while(x % 2 == 0)
        x/=2;
    for (long long d = 3; d * d <= x; d+=2) {
        if(x%d == 0){
            raspuns /= d;
            raspuns *= (d-1);
        }
        while(x%d == 0)
            x/=d;
    }
    if(x > 1)
        raspuns /= x, raspuns *= (x - 1);
    return raspuns;
}

int main() {
    ifstream f("fractii.in");
    ofstream g("fractii.out");
    long long final = 1;
    f>>n;
    for (int i = 2; i <= n; ++i) {
        final += 2 * factoriPrimi(i);
    }
    g<<final;
    return 0;
}