Cod sursa(job #1520365)

Utilizator serbanSlincu Serban serban Data 8 noiembrie 2015 17:22:51
Problema Fractii Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <bits/stdc++.h>

using namespace std;

int n, m, pr[100500], l[100500];
bool viz[1005050];

void primes(int N) {
    N += 1000;
    for(int i = 2; i <= N; i ++)
        if(!viz[i]) {
            m ++;
            pr[m] = i;
            int lim = N / i;
            for(int j = 2; j <= lim; j ++)
                viz[i * j] = true;
        }
}

int main()
{
    freopen("fractii.in", "r", stdin);
    freopen("fractii.out", "w", stdout);

    cin >> n;
    primes(n);
    long long ret = 0;
    for(int i = 1; i <= n; i ++) {
        long long j = 1, aux = i, s = i;
        while(pr[j] <= aux) {
            if(aux % pr[j] == 0) {
                while(aux % pr[j] == 0)
                    aux /= pr[j];
                s -= s / pr[j];
            }
            j ++;
        }
        ret += s;
    }
    cout << (ret << 1) - 1 << "\n";
    return 0;
}