Pagini recente » Cod sursa (job #2774999) | Cod sursa (job #3231510) | Cod sursa (job #2650004) | Cod sursa (job #3175023) | Cod sursa (job #2539598)
#include <cstdio>
#include <array>
using namespace std;
bool rel_prim(int a, int b){
int r = a % b;
while (r){
a = b;
b = r;
r = a % b;
}
return b == 1;
}
array<int, 1000000> phi;
int main()
{
// freopen ("fractii.in","r",stdin);
// freopen ("fractii.out","w",stdout);
int n;
scanf("%d", &n);
int p = n;
for (int i = 2; i < n; i ++)
phi[i] = i;
for (int i = 1; i < n; i ++)
if (phi[i] == i){
phi[i] --;
for (int j = 2 * i; j < n; j += i)
phi[j] = phi[j] / i * (i - 1);
}
for (int i = 2; i < n; i ++){
p += (n - i) / i * phi[i];
for (int j = 1; j <= n % i; j ++)
if (rel_prim(j, i))
p ++;
}
printf("%d", p);
}