Cod sursa(job #372371)

Utilizator stef2503Stefan Stan stef2503 Data 9 decembrie 2009 19:24:15
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <stdio.h>

int v[100001];
int u[10001];
int w[1001];
int k;

int ciur (int n)
{
	int i, j;
	for (i=2; i<n; i++) {
		v[i]=i;
	}
	for (i=2; i<n; i++) {
		if (v[i]!=0) {
			for (j=2; j<n; j++) {
				if (i*j<=n) {
					v[i*j]=0;
				}
				else break;
			}
		}
	}
	j=1;
	k=0;
	for (i=1; i<n; i++) {
		if (v[i]) { 
			u[j]=v[i];
			j=j+1;
			k=k+1;
		}
	}
}

int main ()
{
	freopen("fractii.in", "r", stdin);
	freopen("fractii.out", "w", stdout);
	int n, c, i, j;
	double phi;
	scanf("%d", &n);
	c=n;
	ciur(n);
	for (i=2; i<=n; i++) {
		v[i]=i;
	}
	for (i=2; i<=n; i++) {
		for (j=1; j<=k; j++) {
			while (v[i]%u[j]==0) {
				w[j]=u[j];
				v[i]=v[i]/u[j];
			}
		}
	}
	for (i=2; i<=n; i++) {
		phi=i;
		for (j=1; j<=k; j++) {
			if (w[j]!=0) {
				phi=phi*(1-1/w[j]);
			}
		}
		c=c+phi;
	}
	printf("%d", c);
	return 0;
}