Cod sursa(job #1755487)
Utilizator | Data | 10 septembrie 2016 12:58:10 | |
---|---|---|---|
Problema | Fractii | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.58 kb |
#include <fstream>
#define maxn 1000010
using namespace std;
long long phi[maxn];
int n;
void calculatePhi() {
for (int i = 1; i <= n; i++)
phi[i] = i;
for (int i = 2; i <= n; i++)
if (phi[i] == i)
for (int j = i; j <= n; j += i) {
phi[j] /= i;
phi[j] *= (i - 1);
}
}
int main() {
ifstream in("fractii.in");
ofstream out("fractii.out");
in >> n;
calculatePhi();
long long result = 1LL;
for (int i = 2; i <= n; i++)
result += 2LL * phi[i];
out << result;
return 0;
}