Cod sursa(job #2848403)

Utilizator Sonia.06Braila Sonia Biliana Sonia.06 Data 12 februarie 2022 15:18:46
Problema Fractii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <iostream>
#include <fstream>

using namespace std;
long int N, V[1000001], i, nr;

void euler(int N)  // pt fiecare nr de la 1 la N calculeaza cate nr mai mici sau egale cu i sunt prime cu i (pot forma o fractie ireductibila)
{
    for (i=1; i<=N; i++)
        V[i]=i;
    for (i=2; i<=N; i++)
    {
        if (V[i]==i) //daca nr e prim
        {
            V[i]--;
            for (int j=2; j<=N/i; j++)
                V[i*j]=V[i*j]/i*(i-1);  //incrementeaza fiecare V[x] pentru fiecare factor din descompunerea lui, la final V[x] continand indictaorul lui Euler pt nr x
        }
    }
}  // doar fractiile subunitare

int main()
{
    ifstream f("fractii.in");
    f>>N;
    ofstream g("fractii.out");

    euler(N);
    V[1]=1;
    for (i=2; i<=N; i++)
    {
        nr+=V[i];
        //cout<<V[i];
    }
    nr=nr*2+V[1];

    g<<nr;
    cout<<nr;

    return 0;
}