Cod sursa(job #1024201)

Utilizator alabala1vali smerica alabala1 Data 8 noiembrie 2013 13:32:32
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 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])
		{
			nr += 2*(n - i - n / i + 1);
			continue;
		}
		nr += 2;
		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 << 2 * n + nr + 1;
	g.close();
}