Cod sursa(job #2587997)

Utilizator cdenisCovei Denis cdenis Data 24 martie 2020 00:45:25
Problema Fractii Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <iostream>
#include <fstream>

using namespace std;

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

const int MAX=1000005;
int n,v[MAX],p[MAX],m,i,j,d,eul,cnt;

int euler(int x)
{
    d=1;
    eul=x;
    while(p[d]*p[d]<=x)
    {
        if(x%p[d]==0)
        {
            eul/=p[d];
            eul*=p[d]-1;
            while(x%p[d]==0)
                x/=p[d];
        }
        d++;
    }
    if(x>1)
    {
        eul/=x;
        eul*=x-1;
    }
    return eul;
}

int main()
{
    fin >> n;
    for(i=2;i<=n;i++)
        if(!v[i])
        {
            p[++m]=i;
            for(j=2*i;j<=n;j+=i)
                v[j]=1;
        }
    for(i=1;i<=n;i++)
        cnt+=euler(i);
    fout << 2*cnt-1;
    return 0;
}