Cod sursa(job #1987818)

Utilizator trifangrobertRobert Trifan trifangrobert Data 1 iunie 2017 02:37:15
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <fstream>

using namespace std;

const int dimension = 1000010;
ifstream f("fractii.in");
ofstream g("fractii.out");
bool vec[1000010];
int ciur[1000010];
int s = 0, n;

void Ciur()
{
	vec[0] = vec[1] = true;
	for (int i = 2;i <= dimension;i++)
	{
		if (vec[i] == false)
		{
			int k = 2;
			while (i*k <= dimension)
			{
				vec[i*k] = true;
				k++;
			}
		}
	}
	int j = 0;
	for (int i = 2;i <= dimension;i++)
		if (vec[i] == false)
			ciur[++j] = i;
}

double Number_of_specials(int x)
{
	double prod = x;
	if (x == 1)
		return 0;
	if (vec[x] == false)
		return x - 1;
	for (int i = 1;ciur[i] * ciur[i] <= x;i++)
	{
		if (x%ciur[i] == 0)
			prod = prod*(1 - 1.0 * 1 / ciur[i]);
	}
	return prod;
}

int Number_of_fractions(int n)
{
	for (int i = 1;i <= n;i++)
		s += Number_of_specials(i);
	return 2*s+1;
}

int main()
{
	Ciur();
	f >> n;
	g << Number_of_fractions(n) << "\n";
	f.close();
	g.close();
	return 0;
}