Cod sursa(job #2609323)

Utilizator popoviciAna16Popovici Ana popoviciAna16 Data 2 mai 2020 13:49:15
Problema Fractii Scor 70
Compilator cpp-64 Status done
Runda greseli_destepte Marime 0.92 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 = rasp/v[i] * (v[i]-1);
            while (x%v[i] == 0)
                x = x/v[i];
        }
        i++;
    }
    if (x > 1)
        rasp = rasp/x * (x-1);
    return rasp;
}

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