Cod sursa(job #2828335)

Utilizator ionelia.danielaIonelia Daniela ionelia.daniela Data 7 ianuarie 2022 09:06:40
Problema Fractii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <iostream>
#include <cmath>
#include <fstream>

using namespace std;
ifstream fin("fractii.in");
ofstream fout("fractii.out");
int n, s;

int indicator_euler(int n)
{
    int d = 2, cnt = 1, f = 1, copie = n;
    while(n > 1)
    {
        int p = 0;
        while(n % d == 0)
            n /= d, p++;
        cnt *= (p + 1);
        f *= ((d - 1) * pow(d, p - 1));
        d++;
        if(d * d > n)
            d = n;
    }
    if(cnt == 2)
        return copie - 1;
    return f;
}

int cmmdc(int n, int m)
{
    if(n == m)
        return n;
    if(n < m)
        swap(n, m);
    while(m)
    {
        int r = n % m;
        n = m;
        m = r;
    }
    return n;
}

int main()
{
    fin >> n;
    for(int i = 1; i <= n; ++i)
    {
        s += indicator_euler(i);
        for(int j = i + 1; j <= n; ++j)
            if(cmmdc(i, j) == 1)
                s++;
    }
    fout << s;
    return 0;
}