Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Tính tổng phân số - JavaScript

Cho mảng các cặp số [[a, b], [c, d], ...] đại diện cho các phân số a/b, c/d, .... Tính tổng của tất cả phân số và trả về kết quả dưới dạng phân số tối giản [tử, mẫu].

Ví dụ

Mảng: [[12, 56], [3, 45], [23, 2], [2, 6], [2, 8]]

Giải pháp

Mã triển khai với hàm UCLN (GCD) và cộng phân số:

const arr = [[12, 56], [3, 45], [23, 2], [2, 6], [2, 8]];

// Hàm tìm UCLN (Euclid)
const gcd = (a, b) => {
  while (b) {
    [a, b] = [b, a % b];
  }
  return a;
};

// Cộng 2 phân số a/b + c/d = (ad + bc) / bd
const sumFrac = (a, b) => {
  const [aNumer, aDenom] = a;
  const [bNumer, bDenom] = b;
  let resNumer = aNumer * bDenom + bNumer * aDenom;
  let resDenom = aDenom * bDenom;
  const divisor = gcd(resNumer, resDenom);
  return [resNumer / divisor, resDenom / divisor];
};

// Cộng tất cả phân số trong mảng
const sumArrayOfFractions = arr => arr.reduce((acc, val) => sumFrac(acc, val));

console.log(sumArrayOfFractions(arr));

Kết quả

Đầu ra trong console:

[1731, 140]

Giải thích: Tổng = 1731/140 ≈ 12.364. Đã tối giản phân số.