Pagini recente » Cod sursa (job #826189) | Cod sursa (job #708727) | Cod sursa (job #2104197) | Cod sursa (job #2644082) | Cod sursa (job #2780729)
#include <fstream>
#define NMAX 1000000
using namespace std;
ifstream cin ("fractii.in");
ofstream cout ("fractii.out");
int divizor[NMAX + 1];
void ciur(int n) {
int i, j;
for (i = 2; i * i <= n; i++)
if (divizor[i] == 0) {
for (j = i * i; j <= n; j += i)
divizor[j] = i;
divizor[i] = i;
}
for (i = 1; i <= n; i++)
if (divizor[i] == 0)
divizor[i] = i;
}
int phi(int val) {
int d, rez;
rez = val;
while (val > 1) {
d = divizor[val];
while (val % d == 0)
val /= d;
rez = rez / d * (d - 1);
}
return rez;
}
int main() {
int n, i, j;
long long sol;
cin >> n;
ciur(n);
sol = 1;
for (i = 2; i <= n; i++)
sol += 2 * phi(i);
cout << sol;
return 0;
}