Pagini recente » Cod sursa (job #2717943) | Cod sursa (job #315058) | Monitorul de evaluare | Profil M@2Te4i | Cod sursa (job #2011574)
/////////INFO ARENA - Fractii//////////
#include <iostream>
#include <fstream>
#include <vector>
#include <cmath>
std::fstream in_fractii("fractii.in", std::ios::in);
std::fstream out_fractii("fractii.out", std::ios::out);
int main()
{
unsigned int N;
in_fractii >> N;
in_fractii.close();
//cazuri posibile
unsigned int num_de_fractii = N * N - N + 1;
/////// Acum, o sa scad toate din cazurile posibile pe cele nefavorabile ////////
//Din start, fractiile caer au 1 la numitor sau la numarator sunt fractii ireductibile, deci reprezinta cazuri favorabile
//si nu o sa ma ocup cu acestea
std::vector<bool> numere_prime;
for(unsigned int num = 2; num <= N; num++)
{
//initial, presupun ca toate nr sunt prime, apoi voi incepe sa aplic erastotene
numere_prime.push_back(true);
}
unsigned int prim = 2;
while(prim <= N)
{
if(numere_prime[prim - 2] == true)
{
unsigned int multiplii = prim;
unsigned int num_de_multiplii = 0;
while(multiplii <= N)
{
multiplii += prim;
//fiind multiplu, nu e nr prim
numere_prime[multiplii - 2] = false;
num_de_multiplii++;
}
num_de_fractii -= pow(num_de_multiplii, 2);
num_de_fractii += num_de_multiplii;
}
prim++;
}
for(; prim <= N; prim++)
{
if(numere_prime[prim - 2] == true)
{
num_de_fractii -= 1;
}
}
out_fractii << num_de_fractii;
return 0;
}