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}`);