Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript에서 유리수를 유리수의 합으로 분해하기

<시간/>

문제

정확히 두 개의 숫자 배열을 취하는 JavaScript 함수를 작성해야 합니다.

첫 번째 요소는 유리수의 분자를 지정하고 두 번째 요소는 동일한 수의 분모를 지정합니다.

우리의 함수는 각각 2개의 요소로 된 임의의 수의 하위 배열의 배열을 반환해야 합니다. 하위 배열에 의해 지정된 유리수가 추가될 때 입력 유리수가 합산되고 모든 하위 배열의 분자는 1이 되어야 합니다.

또한 하위 배열의 수가 가능한 한 적은지 확인해야 합니다.

예시

다음은 코드입니다 -

const num = '2/3';
const decompose = (num = '') => {
   const fractions = [];
   let res = eval(num);
   if (res >= 1) {
      fractions = ['' + Math.floor(res)];
      res = res - Math.floor(res);
   };
   let sum = 0;
   let denom = 2;
   while (sum <= res - 0.000000001) {
      if (1 / denom + sum <= res) {
         fractions.push("1/" + denom);
         sum += 1 / denom;
      }
      denom++;
   }
   return fractions;
}
console.log(decompose(num));

출력

다음은 콘솔 출력입니다 -

[ '1/2', '1/6' ]