Pagini recente » Borderou de evaluare (job #389910) | Borderou de evaluare (job #1554857) | Cod sursa (job #1193701) | Borderou de evaluare (job #552488) | Cod sursa (job #3265601)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
vector<int> computeTotients(int N) {
vector<int> phi(N + 1);
for (int i = 1; i <= N; i++) {
phi[i] = i;
}
for (int i = 2; i <= N; i++) {
if (phi[i] == i) { // i is a prime number
for (int j = i; j <= N; j += i) {
phi[j] *= (i - 1);
phi[j] /= i;
}
}
}
return phi;
}
int main() {
ifstream in("fractii.in");
ofstream out("fractii.out");
int N;
in >> N;
vector<int> phi = computeTotients(N);
long long count = 0;
for (int i = 1; i <= N; i++) {
count += phi[i];
}
out << count << endl;
return 0;
}