Cod sursa(job #427685)

Utilizator gabipurcaruGabi Purcaru gabipurcaru Data 28 martie 2010 12:40:11
Problema Fractii Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#include <fstream>
using namespace std;

ifstream in("fractii.in");
ofstream out("fractii.out");

int pow(int n, int k)
{
    int ret;
    if(k==0)
        return 1;
    else if(k%2==0)
    {
        ret = pow(n,k/2);
        return ret*ret;
    }
    ret = pow(n,(k-1)/2);
    return n*ret*ret;
}

int phi(int k)
{
    int ret=1,div, nr;
    for(div=2; div<=k; div++)
    {
        nr = 0;
        while(k%div == 0)
            {nr++;k/=div;}
        if(nr)
            ret*=(div-1)*pow(div,nr-1);
    }
    return ret;
}

int n,s,i;
int main()
{
    in>>n;
    for(i=1; i<=n; i++)
        s+=2*phi(i);
    out<<s-1;
    return 0;
}