Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

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


สมมติว่าต่อไปนี้คือปัญหา:

เรามีลำดับของตัวเลขที่เริ่มต้นจาก 1 และไม่เกินจำนวนใด ๆ เรียกมันว่า num เราต้องเลือกตัวเลขสองตัวดังกล่าวจากลำดับ (เรียกว่า m และ n) ดังนี้:

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

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

ตัวอย่างเช่น −

หากอินพุตเป็น −

const num = 10;

จากนั้นผลลัพธ์ควรเป็น −

const output = [
   [7, 6]
];

เพราะผลรวม (1 ถึง 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]
]