Cod sursa(job #1024208)

Utilizator alabala1vali smerica alabala1 Data 8 noiembrie 2013 13:54:31
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include<fstream>
bool cmmdc(unsigned i, unsigned j)
{
	if (!i)
		return j == 1;
	if (!j)
		return i == 1;
	return cmmdc(j, i%j);
}
int main()
{
	unsigned n, i, nr = 0, a[1000000] = {}, b[1000000] = {};
	std::ifstream f("fractii.in");
    std::ofstream g("fractii.out");
    f >> n;
    f.close();
	for (i = 2; i <= n; i++)
	    if (!b[i])
	       for (unsigned j = 2 * i; j <= n; j += i)
		       b[j] = 1;
	for (i = 2; i < n; i++)
	{
		if (!b[i])
		{
			for (unsigned k = i + 1; k <= n; nr += (k%i++));
			continue;
		}
		for (unsigned k = i * 2; k <= n; a[k += i] = 1);
		for (unsigned j = i + 2; j <= n; j++)
			nr += 2 * (!a[j] && cmmdc(i, j));
		for (unsigned k = i * 2; k <= n; a[k += i] = 0);
	}
	g << nr - 1 + 4 * (n - 1);
	g.close();
}