Cod sursa(job #1557398)

Utilizator daniel.sanduSandu Daniel daniel.sandu Data 27 decembrie 2015 14:33:58
Problema Fractii Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <fstream>
#include <iostream>
#include <vector>

std::vector<int> factors;

bool isPrime(int x) {
  for (int d = 2; d <= x / 2; ++d)
    if (!(x % d))
      return false;
  return true;
}

void setFactors(int x) {
  factors.clear();
  for (int d = 2; d <= x / 2; ++d)
    if (!(x % d) && isPrime(d))
      factors.push_back(d);
  if (x != 1)
    factors.push_back(x);
}

bool isRelativelyPrime(int x) {
  for (auto d : factors)
    if (x % d == 0)
      return false;
  return true;
}

int gcd(int a, int b) {
  int r = 0;
  if (a < b)
    std::swap(a, b);
  while ((r = a % b)) {
    a = b;
    b = r;
  }
  return b;
}

int main() {
  const char *inputFile = "fractii.in",
             *outputFile = "fractii.out";

  std::ifstream in(inputFile);
  std::ofstream out(outputFile);



  int n, nr = 0;

  in >> n;

  for (int i = 1; i <= n; ++i) {
    setFactors(i);
    for (int j = 1; j <= n; ++j)
      if (isRelativelyPrime(j))
        ++nr, std::cout << i << "/" << j << " ";
  }
  out << nr;

  return 0;
}