Cod sursa(job #1973035)

Utilizator RaresEGaySopterean Adrian RaresEGay Data 24 aprilie 2017 11:53:01
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>
#include <math.h>

#define MAXN 1000005

using namespace std;

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

int n;
int c[MAXN];

int phi(int n)
{
    double result = n;
    for (int p=2; p*p<=n; ++p)
    {
        if (n % p == 0)
        {
            while (n % p == 0)
                n /= p;
            result *= (1 - (1 / (double) p));
        }
    }
    if (n > 1)
        result *= (1 - (1 / (double) n));

    return result;
}
int main(){
    f >> n;
    for(int i = 2; i <= n; ++i){
        if(!c[i]){
            for(int j = 2 * i; j <= n; j += i)
                c[j] = 1;
        }
    }
    long long sol = 1;
    for(int i = 2; i <= n; ++i){
        if(!c[i]) sol += 2 * (i - 1);
        else sol += 2 * phi(i);
    }

    g << sol << '\n';
}