Cod sursa(job #2587994)

Utilizator cdenisCovei Denis cdenis Data 24 martie 2020 00:38:41
Problema Fractii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 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++)
    {
        for(j=(n/i)*i+1;j<=n;j++)
            cnt++;
        cnt+=(n/i)*euler(i);
    }
    fout << cnt;
    return 0;
}