Cod sursa(job #2609312)

Utilizator popoviciAna16Popovici Ana popoviciAna16 Data 2 mai 2020 13:43:16
Problema Fractii Scor 80
Compilator cpp-64 Status done
Runda greseli_destepte Marime 0.87 kb
#include <fstream>
using namespace std;

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

bool b[1000001];
int v[1000001];

int euler(int x)
{
    if (b[x] == 0)
        return x-1;
    int rasp = x;
    int i = 1;
    while (v[i] * v[i] <= x)
    {
        if (x%v[i] == 0)
        {
            rasp = 1ll * rasp * (v[i]-1)/v[i];
            while (x%v[i] == 0)
                x = x/v[i];
        }
        i++;
    }
    if (x > 1)
        rasp = 1ll*rasp * (x-1)/x;
    return rasp;
}

int main()
{
    int i, j, n;
    long long nr = 0;
    b[0] = b[1] = 1;
    for (i = 2; i<=1000; i++)
        if (b[i] == 0)
            for (j = i*i; j<=1000000; j=j+i)
                b[j] = 1;
    for (i = 1; i<=1000000; i++)
        if (b[i] == 0)
            v[++v[0]] = i;
    fin >> n;
    for (i = 2; i<=n; i++)
        nr = nr + euler(i);
    fout << 2*nr + 1;
    return 0;
}