Pagini recente » Cod sursa (job #318903) | Cod sursa (job #1376342) | Cod sursa (job #2319389) | Cod sursa (job #575707) | Cod sursa (job #3263908)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("fractii.in");
ofstream fout("fractii.out");
int n;
vector<int> computeTotient(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 prime
for (int j = i; j <= n; j += i) {
phi[j] = phi[j] * (i - 1) / i;
}
}
}
return phi;
}
int main() {
fin >> n;
vector<int> phi = computeTotient(n);
// Count all irreducible fractions
long long count = 0;
for (int q = 1; q <= n; q++) {
count += phi[q]; // Add the count of valid numerators for denominator `q`
}
fout << count << "\n";
return 0;
}