Cod sursa(job #2828612)

Utilizator raul41917raul rotar raul41917 Data 7 ianuarie 2022 17:44:04
Problema Fractii Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fi("fractii.in");
ofstream fo("fractii.out");
int totient(int x)
{
    int p=1;
    int copie=x;
    if(x%2==0)
    {
        while(x%2==0)
        {
            p=p*2;
            x/=2;
        }
        p/=2;
    }
    int d=3;
    while(x!=1)
    {
        if(x%d==0)
        {
            while(x%d==0)
            {
                p=p*d;
                x/=d;
            }
            p=p/d;
            p=p*(d-1);
        }
        d+=2;
        if(d*d>copie)
            d=x;
    }
    return p;
}
int main()
{
    int n;
    fi>>n;
    unsigned long long sum=0;
    for(int i=n;i>1;i--)
        sum=sum+2*totient(i);
    sum++;
    fo<<sum;
    fi.close();
    fo.close();
    return 0;
}