Cod sursa(job #785662)

Utilizator mipsPavel Mircea mips Data 9 septembrie 2012 16:23:21
Problema Fractii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 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);
            }
        }
    }

    long long total=0;

    //for(int i=1;i<=100000;i++)
    //cout << i << " -> "<< euler[i]<<endl;


    for(int i=1;i<=n;i++)
    {
        total+= 2*euler[i];
    }
    if (n==0)
        cout << 0;
    else
        cout << total-1<<endl;
}
// 6 = 2*3
// 1*2
//8
//1 2 4 6 8