Cod sursa(job #2919111)

Utilizator XelaethAlexandru Obreja Xelaeth Data 15 august 2022 18:18:55
Problema Fractii Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <iostream>
#include <fstream>

using namespace std;
int n;
bool e_prim[1000001];
int prime[100000], k;
long long rasp;
void ciur()
{
	for (int i = 4; i <= n; i += 2)
		e_prim[i] = 1;
	for (int i = 3; i <= n; i += 2)
		for(int j = i*2; j<=n; j+=i)
			e_prim[j] = 1;

	for (int i = 2; i <= n; i++)
		if (e_prim[i]==0)
			prime[++k] = i;
}

void euler()
{
	for (int i = 1; i <= n; i++)
	{
		int j = 1;
		bool ok = 1;
		int aux = i;
		while (prime[j] <= i / 2)
		{
			if (i % prime[j] == 0)
			{
				aux /=prime[j];
				aux *= prime[j]-1;
				ok = 0;
			}
			j++;
		}
		aux = aux -ok;
		rasp += aux;
	}
}

int main()
{
	ifstream f("fractii.in");
	ofstream g("fractii.out");
	f >> n;
	ciur();
	euler();
	g << rasp*2+1;
	f.close();
	g.close();
	return 0;
}