Cod sursa(job #1419050)

Utilizator DorelBarbuBarbu Dorel DorelBarbu Data 14 aprilie 2015 17:14:09
Problema Fractii Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("fractii.in");
ofstream out("fractii.out");

const int MAXN = 1000000;
bool isPrime[MAXN+1];
int N;

void citire(){
    in>>N;
}

void ciurEratostene()
{
    for(int i = 2; i <= MAXN; i++)
        if( isPrime[ i ] == 0 )
            for(int j = 2*i; j <= MAXN; j+=i)
                isPrime[ j ] = 1;
}

void descFact(int n)
{
    for(int p = 2; n != 1; p++)
    {
        int k = 0;
        while(n % p == 0){
            k++;
            n = n/p;
        }
        cout<<p<<' '<<k<<endl;
    }
}

void testDescFact(int n)
{
    descFact(n);
}

long long phi(int n)
{
    long long res = n;

    for(int p = 2; n != 1; p++)
        if(n % p == 0){

            while(n % p == 0)
                n = n/p;
            res = res*(p - 1)/p;
        }



    return res;
}

long long formula(int n){

    long long answer = 0;

    for(int i = 2; i <= n; i++)
        answer += 2*phi( i );

    answer+=1;

    return answer;
}

int main()
{
    //ciurEratostene();
    citire();
    out<<formula(N);
    return 0;
}