Cod sursa(job #2416762)

Utilizator vlad082002Ciocoiu Vlad vlad082002 Data 28 aprilie 2019 02:05:29
Problema Fractii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <fstream>
using namespace std;

int n, phi[1000001];
long long fractii = 1;

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

    //calculam functia phi[n] = nr de numere prime cu n mai mici decat n
    for (int i=1;i<=n;i++)
        phi[i]=i;//initializam cu i
    for (int i=2;i<=n;i++)
        if(phi[i]==i)
            for(int j=i;j<=n;j+=i)
                phi[j] = phi[j]/i *(i-1); //formula este phi[j] = j* produs[(i-1)/i] pt toate numerele prime divizibile cu j

    // toate fractiile sunt reprezentate de toate aranjamentele de 2 nr prime intre ele
    // multimea tuturor fractiilor cu numere mai mici decat n este suma multimilor  fractiilor cu numere mai mici decat 1, 2, ..., n
    //(2* phi[i] pt ca fractiile il pot avea pe i si la numitor, si la numarator)
    for(int i = 2; i <= n; i++)
        fractii += 2 * phi[i];

    g << fractii;
    f.close();
    g.close();
    return 0;
}