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

เขียนโปรแกรมคำนวณค่าต่ำสุดร่วมของสองตัวเลขด้วย JavaScript

เราต้องเขียนฟังก์ชันที่รับตัวเลขสองตัวและคืนค่าต่ำสุดร่วม (LCM) ของพวกมัน

ค่าต่ำสุดร่วม (LCM) คืออะไร?

ค่าต่ำสุดร่วมของตัวเลข a และ b คือจำนวนเต็มบวกที่เล็กที่สุดที่หารด้วย a และ b ลงตัว

ตัวอย่างเช่น - LCM ของ 6 และ 8 คือ 24 เพราะ 24 เป็นจำนวนเต็มบวกที่เล็กที่สุดที่หารด้วย 6 และ 8 ลงตัว

วิธีคำนวณ LCM

หนึ่งในหลายวิธีในการคำนวณ LCM ของ a และ b คือการหารผลคูณของ a และ b ด้วยจำนวนเต็มที่มากที่สุด (ซึ่งรู้จักกันในชื่อ Greatest Common Divisor หรือ GCD) ที่หาร a และ b ลงตัวทั้งคู่

ในกรณีของ 6 และ 8 ผลคูณคือ 48 และจำนวนเต็มที่มากที่สุดที่หารทั้งคู่นั้นคือ 2 ดังนั้น LCM คือ:

(6 * 8) / 2 = 24

เมื่อเข้าใจเรื่องนี้แล้ว มาเขียนโค้ดกัน:

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

const lcm = (a, b) => {
  let min = Math.min(a, b);
  while (min >= 2) {
    if (a % min === 0 && b % min === 0) {
      return (a * b) / min;
    }
    min--;
  }
  return (a * b);
};

console.log(lcm(6, 8));
console.log(lcm(16, 18));
console.log(lcm(0, 8));
console.log(lcm(11, 28));
console.log(lcm(18, 34));

การเข้าใจโค้ด

เนื่องจากจำนวนเต็มที่มากที่สุดที่หารทั้งสองตัวลงตัวจะยังคงน้อยกว่าหรือเท่ากับตัวเลขที่เล็กกว่าของสองตัวที่เราคำนวณ LCM อยู่ เราจึงรันลูปแบบนับถอยหลังจากตัวเลขที่เล็กกว่าลงมาจนถึง 2

ถ้าในระหว่างการวนลูปเราพบตัวเลขใดตัวหนึ่งที่หารทั้งสองตัวลงตัว เราสามารถรับประกันได้ว่ามันคือตัวเลขที่มากที่สุดที่หารทั้งคู่นั้นลงตัว เพราะเราอยู่ในลูปนับถอยหลัง จึงคืนค่า LCM ทันทีที่นั่น

ถ้าเราวนลูปจนจบ หมายความว่าเราไม่พบตัวเลขแบบนั้น และ 1 คือตัวเลขเดียวที่หารทั้งคู่นั้นลงตัว (ในทางอื่น หมายถึงตัวเลขทั้งสองเป็น coprime) ดังนั้นเราจึงคืนค่าผลคูณของพวกมันโดยตรง

ผลลัพธ์

ผลลัพธ์ในคอนโซลจะเป็นดังนี้:

24 144 0 308 306