Cod sursa(job #551466)

Utilizator svoprea1Silviu Vlad Oprea svoprea1 Data 10 martie 2011 20:09:12
Problema Fractii Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <stdio.h>

int
n_p(int);

int
prim(int);

int
main()
{
	int   n;
	FILE  *f;

	if ((f = fopen("fractii.in", "r")) == NULL)
	{
		perror("Cannot open source file");
		return -1;
	}

	if (fscanf(f, "%d", &n) != 1)
	{
		printf("Cannot read from file ...\n");
		return -1;
	}

	if (fclose(f) == EOF)
		perror("Cannot close source file");

	if ((f = fopen("fractii.out", "w")) == NULL)
	{
		perror("Cannot open destination file");
		return -1;
	}
	if (fprintf(f, "%d", n_p(n)) < 0)
	{
		printf("Cannot write to file...\n");
		return -1;
	}

	if (fclose(f) == EOF)
	{
		perror("Cannot close destination file");
		return -1;
	}

	return 0;
}

int
n_p(int n)
{
	int i, j, k, a, c = 0;

	for (i = 2; i <= n; i++)
	{
		for (k = 2; k <= i; k++)
			if (i % k == 0 && prim(k))
			{
				j = 1;
				do
					{
						j++;
					} while (k * j <= i);
				for (a = j; a * k <= n; a++)
					c++;
			}
	}
	return (n*(n-1) - 2 * c + 1);
}

int
prim(int n)
{
	int i;

	for (i = 2; i < n / 2; i++)
	{
		if (n % i == 0)
			return 0;
	}
	return 1;
}