Cod sursa(job #1985127)

Utilizator vazanIonescu Victor Razvan vazan Data 26 mai 2017 22:41:47
Problema Fractii Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <fstream>
#include <iostream>
#include <cmath>
using namespace std;
#define NMAX 1000100
int ciur[NMAX];

void pregen(){
	int lim = sqrt(NMAX);
	for(int i = 2; i <= lim; i++)
		if(!ciur[i]){
			for(int j = i * i; j < NMAX; j += i)
				ciur[j] = i;
		}
	
}


int main(){
	ifstream fin("fractii.in");
	ofstream fout("fractii.out");
	int n;
	fin >> n;
	pregen();
	long long rasp = 0;
	for(int i = 2; i <= n; i++){
		int tmp = i, ci = i, q;
		cout << endl;
		while(ci > 1 && ciur[ci]){
			tmp /= ciur[ci];
			tmp *= ciur[ci] - 1;
			q = ciur[ci];
			while(!(ci % q))
				ci /= q;
		}
		if(ci > 1){
			tmp /= ci;
			tmp *= ci - 1;
		}
		rasp += tmp;
	}
	fout << rasp * 2 + 1;
}