Cod sursa(job #230461)

Utilizator mISHOOOmISHOOO mISHOOO Data 13 decembrie 2008 23:41:15
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <stdio.h>

FILE *fi = fopen("fractii.in", "r");
FILE *fo = fopen("fractii.out", "w");

unsigned long long NS = 1;
unsigned long N;

long long putere(long x, long y) {
	long long p = 1;

	if (y==0) return 1;
	if (y==1) return x;

	for (long i=1; i<=y; i++) p*=x;
	return p;
}

long long totient(long X) {
	long k=0, D=3;
	long long NF = 1;

	if (X==1) return 1;

	if (X%2 == 0) {
		while (X%2 == 0) { X/=2; k++; }
		NF=putere(2, k-1);
	}

	while (X>1) {
		k = 0;
		
		if (X%D == 0) {
			while (X%D == 0) { X/=D; k++; }
			NF*=putere(D, k-1)*(D-1);		
		}

		D+=2;
	}
	
	return NF;
}

int main() {
	fscanf(fi, "%ld", &N);
	
/*	for (long i=2; i<=N; i++) {
		NS+=totient(i)*2;
	}*/
	
	fprintf(fo, "%llu\n", totient(20));
		
	fclose(fi);
	fclose(fo);

	return 0;
}