Cod sursa(job #767352)

Utilizator dragosdenaDragos Dena dragosdena Data 13 iulie 2012 12:50:49
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <iostream>
#include <fstream>
#include <vector>
#define MAX_SIZE 1000001
using namespace std;

char is_prime[MAX_SIZE];
int vec[MAX_SIZE];

int main() {
	ofstream out;
	ifstream in;
	long long n, count = 0;
	vector<int> primes;

	in.open("fractii.in");
	out.open("fractii.out");
	in >> n;
	
    primes.push_back(2);
    for (int i = 3; i <= n; i += 2) {
        if (is_prime[i] == 0) {
            primes.push_back(i);
            for (int j = i + 1; j <= n; j += i)
                is_prime[j] = 1;
        }
    }

    for (int i = 0; i < primes.size(); i ++) {
        int p = primes[i], val = n/p;
        for (int j = 2 * p; j <= n; j += p)
            vec[j] -= -- val;
    }

    for (int i = 2; i <= n; i ++)
        count += vec[i];
    count += (n - 2) * (n - 1)/2;
    count *= 2;
    count += 2 * n - 1;
	
	out << count << endl;

    return 0;
}