Cod sursa(job #2023406)

Utilizator skoda888Alexandru Robert skoda888 Data 18 septembrie 2017 21:41:49
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.27 kb

#include <iostream>
#include <fstream>

int main()
{
    //citire N
    long int N;
    std::ifstream in_fractii("fractii.in");
    std::ofstream out_fractii("fractii.out");
    in_fractii >> N;
    in_fractii.close();

    //din numarul maxim de fractii care se pot forma din numerele date voi scadea fractiile reducitbile
    long int num_fract_ireduct = N * N;
    //std::cout << num_fract_ireduct << " ";

    //de asemenea scadem toate numerele cu numaratorul egal cu numitorul
    num_fract_ireduct = num_fract_ireduct - (N - 1);
    //std::cout << num_fract_ireduct << " ";
    long int ciurul_lui_erastoten[N + 1] = {0};
    long int prim = 2;
    while(prim <= N/2)
    {
        // daca numar prim
        if(ciurul_lui_erastoten[prim] == 0)
        {
            long int temp = prim;
            long int n = 1;
            while(temp <= N)
            {
                temp = temp + prim;
                //std::cout << "prim: " << prim << "temp: " << temp << std::endl;
                ciurul_lui_erastoten[temp] = 1;
                if(temp <= N)
                n++;
            }
            num_fract_ireduct = num_fract_ireduct - (n * (n - 1));
        }
        prim++;
    }

    out_fractii << num_fract_ireduct;
    return 0;
}