Cod sursa(job #220477)

Utilizator mika17Mihai Alex Ionescu mika17 Data 10 noiembrie 2008 23:21:24
Problema Fractii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <fstream>

#define NMAX 1000001

using namespace std;

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

int phi[NMAX],lp[NMAX];

int main()
{
        int N;
        fin>>N;

        long long res = 1ll; phi[1] = lp[1] = 1;
        
        for(int i = 2; i <= N; ++i)
        {
                if(!phi[i])
                        phi[i] = i - 1, lp[i] = i; //i e prim
                for(int j = 2; i * j <= N && j <= lp[i] ; ++j)
                 if(phi[j] == j - 1) {
                  phi[i * j] = i%j ? phi[i] * phi[j] : phi[i] * j;
                  lp[i * j] = j;
                }
                res += 2*phi[i];
        }
        fout<<res;
}