Pagini recente » Cod sursa (job #3354093) | Cod sursa (job #3301570) | Cod sursa (job #2729993) | Cod sursa (job #3199154) | Cod sursa (job #3329616)
#include <iostream>
using namespace std;
FILE *in = fopen("fractii.in", "r"), *out = fopen("fractii.out", "w");
int n, prim[1000005];
long long res = 1;
int main()
{
fscanf(in, "%d", &n);
for(int i = 1; i <= n; ++i)
prim[i] = 1;
int rem, phi_i;
for(int i = 2; i <= n; ++i){
for(int j = 2*i; j <= n; j += i)
prim[j] = 0;
if(prim[i])
phi_i = i - 1;
else {
phi_i = i;
rem = i;
for(int pi = 2; pi <= rem; ++pi)
if(prim[pi] && i % pi == 0){
phi_i = phi_i * (pi - 1) / pi;
while (rem % pi == 0){
rem /= pi;
if (prim[rem]){
if(rem != pi){
phi_i = phi_i * (rem - 1) / rem;
rem = 1;
}
break;
}
}
}
}
res += 2 * phi_i;
}
fprintf(out, "%lld", res);
return 0;
}