Cod sursa(job #785660)

Utilizator mipsPavel Mircea mips Data 9 septembrie 2012 16:16:51
Problema Fractii Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <iostream>
#include <vector>
#include <cstdio>
#include <set>
using namespace std;
#define MAX 1000001

bool primes[MAX];
int euler[MAX];
set<int> primeFact[MAX];
int main()
{
    freopen("fractii.in","r",stdin);
    freopen("fractii.out","w",stdout);
    int n;
    cin >> n;

    for(int i=0;i<MAX;i++)
    {
        primes[i] = true;
        euler[i] = i;
    }

    for(int i=2;i<MAX;i++)
    {
        if (primes[i])
        {
            for(int j=i;j<MAX;j+=i)
            {
                primes[j] = false;
                euler[j] = euler[j] / i * (i-1);
            }
        }
    }

    int total=0;
    for(int i=1;i<=n;i++)
    {
        total+= 2*euler[i];
    }

    cout << total-1<<endl;
}
// 6 = 2*3
// 1*2
//8
//1 2 4 6 8