Cod sursa(job #2097489)

Utilizator arcoC. Nicolae arco Data 31 decembrie 2017 16:39:49
Problema Fractii Scor 40
Compilator c Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
#include <stdint.h>

typedef unsigned int uint;

uint phi(uint n);

int main(void)
{
	FILE *in = fopen("fractii.in", "r");
	FILE *out = fopen("fractii.out", "w");
	if(in != NULL && out != NULL)
	{
		uint n, i = 1, res = 0;
		fscanf(in, "%u%*c", &n);
		for(; i <= n; i++)
		{
			res += phi(i);
		}
		fprintf(out, "%u\n", (2 * res - 1));

		fclose(in);
		fclose(out);
	}
	else
	{
		printf("Error\n");
	}

	return 0;
}

uint phi(uint n)
{
	uint result = n;
	uint i = 2;
	for(; i * i <= n; i++)
	{
		if(n % i == 0)
		{
			while(n % i == 0)
			{
				n /= i;
			}
			result -= result / i;
		}
	}

	if(n > 1)
	{
		result -= result / n;
	}
	return result;
}