Cod sursa(job #97744)

Utilizator cristiprgPrigoana Cristian cristiprg Data 8 noiembrie 2007 15:29:12
Problema Fractii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<fstream>
using namespace std;

int euler(int x) //determina indicataorul lui Euler pt un numar x
{
    int d=2,exp,p=x;
    exp=0;
    while(x%d==0)
      x/=d,exp++;
    if(exp)
      p=p/d*(d-1);
    d=3;
    while(x!=1)
    {
        exp=0;
        while(x%d==0)
              x/=d,exp++;
        if(exp)
             p=p/d*(d-1);
        d+=2;
        if(d*d>x && x>1)
        {
            p=p/x*(x-1);
            x=1;
        } 
    }
    return p;
}


int main()
{
    ifstream fin("fractii.in");
    ofstream fout("fractii.out");
    int n;
    fin>>n;
    fin.close();
    int i;
    long long rez=1;
    for(i=2;i<=n;i++)
        rez+=2*euler(i);
    fout<<rez;
    fout.close();
    return 0;
    
}