Pagini recente » Cod sursa (job #1805350) | Cod sursa (job #1662115) | Cod sursa (job #683570) | Cod sursa (job #3216285) | Cod sursa (job #2500224)
#include <cstdio>
#include <bitset>
using namespace std;
const int NMAX = 1000505;
bitset<NMAX> notPrime;
int phi[NMAX], N;
void precomputeTotientFunction() {
for (int i = 2; i < NMAX; i++) {
phi[i] = i;
}
for (int i = 2; i < NMAX; i++) {
if (!notPrime[i]) {
phi[i] = i - 1;
for (int j = 2 * i; j < NMAX; j += i) {
phi[j] = phi[j] / i * (i - 1);
notPrime[j] = 1;
}
}
}
}
int main() {
freopen("fractii.in", "r", stdin);
freopen("fractii.out", "w", stdout);
precomputeTotientFunction();
scanf("%d", &N);
long long result = 0;
for (int i = 2; i <= N; i++) {
result += phi[i] * 2;
}
// add 1 / 1 once only
printf("%lld\n", result + 1);
return 0;
}