Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

การหาสองตัวเลขที่ผลคูณเท่ากับผลรวมของที่เหลือใน JavaScript

ปัญหา

เรามีลำดับตัวเลข 1 ถึง num ต้องเลือกสองตัว m และ n ที่ทำให้:

sum(1 to num) - (m + n) = m * n

และคืนค่าอาร์เรย์ของกลุ่มตัวเลขทั้งหมดที่ตรงเงื่อนไข

ตัวอย่าง

ถ้าตัวเลขนำเข้าคือ:

const num = 10;

ผลลัพธ์ควรเป็น:

const output = [[7, 6]];

เพราะ sum(1 to 10) = 55 และ 55 - (6 + 7) = 6 * 7 = 42

ตัวอย่างโค้ด

const num = 10;
const pickNumbers = num => {
  const sum = (num) * (num + 1) * (.5);
  const results = [];
  for (let n = 1; n <= num; n++) {
    let first = sum - n;
    let second = n + 1;
    if (first % second === 0) {
      let m = first / second;
      if (m < num && m !== n && results.every(group => group[0] + group[1] !== m + n)) {
        results.push([m, n]);
      }
    }
  }
  return results;
};
console.log(pickNumbers(10));

ผลลัพธ์

[[7, 6]]