Cod sursa(job #1572089)

Utilizator gabime11Gabriel gabime11 Data 18 ianuarie 2016 19:05:20
Problema Fractii Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
/*Gigel, intr-o zi cand isi facea temele la matematica,
s-a apucat sa scrie pe o foaie de hartie, un sir de fractii
ireductibile de forma P/Q cu 1 ≤ P,Q ≤ N, unde N este un numar
natural ales de el. De exemplu, pentru N = 4 el a obtinut urmatorul sir:

1/1 1/2 1/3 1/4 2/1 2/3 3/1 3/2 3/4 4/1 4/3

Gigel s-a apucat apoi sa numere cate fractii a obtinut pentru N = 4 si a vazut ca sunt 11.*/
#include<iostream>
#include<fstream>
using namespace std;
int fi(int n)
{
    int f,x,d,c,y;
    f=1;
    x=n;
    d=2;
    while(d<=x/d)
    {
        c=0;
        y=1;
        while(x%d==0)
        {
            c++;
            y*=d;
            x/=d;
        }
        if(c>0)
        {
            f*=(d-1)*(y/d);
        }
        d++;
    }
    if(x>1)
    {
        f=f*(x-1);
    }
    return f;
}
int main()
{
    int i,j,nr=1,n;
    ifstream fin("fractii.in");
    ofstream fout("fractii.out");
    fin>>n;
    nr=1;
    for(j=2;j<=n;j++)
    {
        nr+=2*fi(j);
    }
    fout<<nr;
    fin.close();
    fout.close();
    return 0;
}