https://www.acmicpc.net/problem/1735

 

1735번: 분수 합

첫째 줄과 둘째 줄에, 각 분수의 분자와 분모를 뜻하는 두 개의 자연수가 순서대로 주어진다. 입력되는 네 자연수는 모두 30,000 이하이다.

www.acmicpc.net

function gcd(a, b) {
  let tmp = 0;
  if (a < b) {
    tmp = a;
    a = b;
    b = tmp;
  }
  while (b != 0) {
    n = a % b;
    a = b;
    b = n;
  }
  return a;
}

const input = require("fs")
  .readFileSync("ex.txt")
  .toString()
  .trim()
  .split("\n");

const [molecule1, denominator1] = input[0]
  .split(" ")
  .map((item) => parseInt(item));

const [molecule2, denominator2] = input[1]
  .split(" ")
  .map((item) => parseInt(item));

let resultMolecule = molecule1 * denominator2 + molecule2 * denominator1;
let resultDenominator = denominator1 * denominator2;

const gcdValue = gcd(resultMolecule, resultDenominator);
while (true) {
  if (gcdValue === 1) {
    break;
  }
  if (resultDenominator % gcdValue !== 0 || resultMolecule % gcdValue !== 0) {
    break;
  }
  resultMolecule = resultMolecule / gcdValue;
  resultDenominator = resultDenominator / gcdValue;
}

console.log(`${resultMolecule} ${resultDenominator}`);

+ Recent posts