Cod sursa(job #2133964)

Utilizator SonicAndreiAndrei Vaida SonicAndrei Data 17 februarie 2018 14:59:21
Problema Fractii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <iostream>
#include <fstream>
using namespace std;


int cmmdc(int a, int b) {
    while (a != b) {
        if (a > b)
            a = a - b;
        else
            b = b - a;
    }
    return a;
}

bool divizibile(int a, int b) {
    if (a % 2 == 0 && b % 2 == 0)
        return true;

    int minim;
    if (a < b)
        minim = a;
    else
        minim = b;

    for (int i = 3; i <= minim/2; i += 2)
        if (a % i == 0 && b % i == 0)
            return true;
    return false;
}


int main() {
    int N, P, Q, nrFractii;

    // 1. Citire N
    ifstream fin ("fractii.in");
    fin >> N;
    fin.close();
    if (N < 1 || N > 1000000) {
        cout << "N trebuie sa fie cuprins intre 1 si 1 milion.";
        return 1;
    }

    // 2. Determinare fracții ireductibile
    nrFractii = N * 2 - 1;  // „unu/orice” și „orice/unu” este ireductibil
    for (P = 2; P < N; P++) {
        for (Q = P+1; Q <= N; Q++) {
            if (!divizibile(P,Q))
                nrFractii += 2;
        }
    }

    // 3. Printarea numărului
    ofstream fout ("fractii.out");
    fout << nrFractii;
    fout.close();

    return 0;
}