Cod sursa(job #562479)

Utilizator EduardLEduard Luca EduardL Data 23 martie 2011 09:50:54
Problema Fractii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.6 kb
# include <stdio.h>

int N, i, j;
long long s, result;
int phi[1000001];

int main(){
	freopen ("fractii.in", "r", stdin);
	freopen ("fractii.out", "w", stdout);
	scanf ("%d", &N);
	for (int i=1;i<=N;i++) phi[i]=i; // construim vectorul phi (vezi documentatie Wikipedia: Euler's Phi
	for (int i=2;i<=N;i++){
	    if (phi[i]==i){
			for (j=i;j<=N;j+=i){
				phi[j] /=i;
				phi[j] *= (i-1);
			}
		}
	}
	for (j = 2; j <= N; j++)
		s += phi[j]; // calculam suma totient-ului phi 
	result = s * 2 + 1; // calculam rezultatul final al fractiilor folosind s
	printf ("%lld", result);
	return 0;
}