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

Tìm số n chữ số nhỏ nhất chia hết cho tất cả phần tử mảng - JavaScript

Viết hàm nhận số n (số chữ số) và mảng số. Tìm số có n chữ số nhỏ nhất chia hết cho tất cả phần tử trong mảng. Nếu không có, trả về số nhỏ nhất thỏa mãn (có thể > n chữ số).

Ví dụ

Mảng: [12, 4, 5, 10, 9]

Với n=2 và n=3 → kết quả đều là 180 (BCNN của mảng).

Giải pháp

Mã triển khai (tìm từ 10^(n-1) trở lên):

const arr = [12, 4, 5, 10, 9];
const num1 = 2;
const num2 = 3;

const allDivides = (arr, num) => arr.every(el => num % el === 0);

const smallestMultiple = (arr, num) => {
  let smallestN = Math.pow(10, num - 1); // Số n chữ số nhỏ nhất
  while (!allDivides(arr, smallestN)) {
    smallestN++;
  }
  return smallestN;
};

console.log(smallestMultiple(arr, num1)); // 180
console.log(smallestMultiple(arr, num2)); // 180

Kết quả

Đầu ra trong console:

180
180

Tối ưu: Tính BCNN (LCM) của mảng trước, sau đó tìm bội số nhỏ nhất ≥ 10^(n-1).