Cod sursa(job #1469627)

Utilizator tancuStancu George tancu Data 8 august 2015 23:00:25
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include<stdio.h>
#include<math.h>
int cmmdc(int a, int b)
{
	int cmmdc;
	while (b != 0)
	{
		cmmdc = b;
		b = a % b;
		a = cmmdc;
	}
	return a == 1 ? 0 : a;
	/*
	while (a != b)
		if (a > b)
			a = a - b;
		else
			b = b - a;
	return a == 1 ? 0 : a;
	*/
}

int main()
{
	long unsigned n;

	FILE *in;
	fopen_s(&in, "fractii.in", "r");

	fscanf_s(in, "%d", &n);
	fclose(in);
	long double s;
	long unsigned fi, i, j;
	int v[500], nrp = 0, p, ok;
	double h;

	if (n == 1)
		s = 1;
	else
	{
		s = 3;
		v[0] = 2;
		for (i = 3;i <= n;i++)
		{
			j = i;
			fi = i;
			p = 0;
			while (j > 1)
			{
				ok = 0;
				while (!(j%v[p]))
				{
					ok = 1;
					j = j / v[p];
				}
				if (ok)
					fi = fi / v[p] * (v[p] - 1);else {
					h = sqrt((double)j);
					if ((v[p] > h) && (j > 1))
					{
						fi = fi / j*(j - 1);
						if ((j<1000) && (j>v[nrp]))
							v[++nrp] = j;
						j = 1;
					}
				}
				if (p < nrp)
					p++;
			}
			s = s + 2 * fi;
		}
	}


	FILE *out;
	fopen_s(&out, "fractii.out", "w");
	fprintf_s(out, "%.0lf", s);
	fclose(out);

	return 0;
}