Cod sursa(job #2587998)

Utilizator cdenisCovei Denis cdenis Data 24 martie 2020 00:46:41
Problema Fractii Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 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;
long long 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+=1LL*euler(i);
    fout << 2LL*cnt-1LL;
    return 0;
}