Pagini recente » Cod sursa (job #910150) | Cod sursa (job #3287247) | Cod sursa (job #2536041) | Cod sursa (job #1166489) | Cod sursa (job #2133964)
#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;
}