Pagini recente » Cod sursa (job #1241977) | Cod sursa (job #2139504) | Borderou de evaluare (job #2285280) | Cod sursa (job #814597) | Cod sursa (job #2780726)
#include <fstream>
#define NMAX 1000000
using namespace std;
ifstream cin ("fractii.in");
ofstream cout ("fractii.out");
int maxdiv[NMAX + 1];
void ciur(int n) {
int i, j;
for (i = 2; i <= n; i++)
if (maxdiv[i] == 0) {
for (j = 2 * i; j <= n; j += i)
maxdiv[j] = i;
maxdiv[i] = i;
}
}
int phi(int val) {
int d, rez;
rez = val;
while (val > 1) {
d = maxdiv[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;
}