Pagini recente » Cod sursa (job #1026439) | Cod sursa (job #2106330) | Cod sursa (job #1832271) | Cod sursa (job #2471218) | Cod sursa (job #1576793)
#include <stdio.h>
#include <math.h>
bool prim(int);
bool prim_pow(int, int);
int rel_prim(int);
int main(){
freopen("fractii.in","r",stdin);
freopen("fractii.out","w",stdout);
long long n, m, a, i;
scanf("%lli",&n);
a = 1;
for(i = 1; i < n; ++i){
a += 2 * rel_prim(i + 1);
}
printf("%lli", a);
return 0;
}
int rel_prim(int n){
if(prim(n))
return n - 1;
int i = 2;
while(n % i)
++i;
if(prim_pow(n, i))
return n - n / i;
else
return rel_prim(i)*rel_prim(n/i);
}
bool prim(int n){
if(n == 2)
return true;
if(n % 2 == 0){
return false;
}
int i, sq = sqrt(n);
for(i = 3; i <= sq; i += 2){
if(n % i == 0)
return false;
}
return true;
}
bool prim_pow(int n, int i){
while(n % i == 0)
n /= i;
if(n == 1)
return true;
return false;
}