Pagini recente » Cod sursa (job #1696104) | Cod sursa (job #12927) | Profil RalucaMoldoveanu | Cod sursa (job #1102476) | Cod sursa (job #610218)
Cod sursa(job #610218)
/*
* 002-Fractii
* 2011-08-25
*
* We apply the formula phi(n) = n*(p_i - 1)/p_i
* where p_i are all (distinct) prime divisors of n
*/
#include <stdio.h>
#include <string.h>
#define MN (1000001)
int main()
{
int N;
char prime[MN]; // Erathostene's xieve
float phi[MN]; // Euler's totient function
int i, j;
long long S = 0;
freopen("fractii.in", "r", stdin);
freopen("fractii.out", "w", stdout);
scanf("%d", &N);
memset(prime, 0x01, sizeof(prime));
for(i = 0; i <= N; ++i)
phi[i] = i;
for(i = 2; i <= N; ++i) if(prime[i]) {
phi[i] = i-1; // i is prime
for(j = i+i; j <= N; j += i) {
prime[j] = 0;
phi[j] *= (float)(i-1)/i;
}
}
for(i = 2; i <= N; ++i)
S += phi[i];
S = 2*S+1;
printf("%lld\n", S);
return 0;
}