Cod sursa(job #2553587)

Utilizator adieldinuadieldinu adieldinu Data 22 februarie 2020 10:07:28
Problema Fractii Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <fstream>
//φ(n)
//CERINTA : Se da numarul n, cate fractii ireductibile se pot forma cu elementele multimii {1, 2, 3, ... ,n}
using namespace std;

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

int phi(int n)
{
    int r = n , d = 2;
    while(n > 1)
    {
        if(n % d == 0)
        {
            r = r / d * (d - 1);
            while(n % d == 0)
                n /= d;
        }
        d ++;
        if(d * d > n)
            d = n;
    }
    return r;
}
/*
int* phi2(int n)
{
    int *partial;

    for(int i = 1; i <= n ; i++)
        partial[i] = i;

    for(int i = 2;  i <= n ; i++)
        if(partial[i] == i)
        {
            partial[i] --;
            for(int j = 2; j * i <= n ; j++)
                partial[i * j] = partial[i * j] / i * (i - 1);
        }
        return partial;
}
*/

int main()
{
    int n , s = 0;
    in>>n;
    //int *vec = phi2(n);
    for(int i = 1; i <=n; i++)
        s += 2 * phi(i);
    out<<s-1;
}