เราจำเป็นต้องเขียนฟังก์ชันที่ยอมรับตัวเลขสองตัวและคืนค่าตัวคูณร่วมน้อยของพวกมัน
ตัวคูณร่วมน้อย (LCM)
ผลคูณร่วมน้อยของตัวเลขสองตัว a และ b คือจำนวนเต็มบวกที่เล็กที่สุดที่หารด้วย a และ b ลงตัว
ตัวอย่างเช่น − LCM ของ 6 และ 8 คือ 24 เพราะ 24 เป็นจำนวนเต็มบวกที่น้อยที่สุดที่หารด้วย 6 และ 8
วิธีการคำนวณ LCM
หนึ่งในหลายวิธีในการคำนวณ LCM ของตัวเลขสองตัว a และ b คือการหารผลคูณของ a และ b ด้วยจำนวนเต็มที่มากที่สุด (เรียกอีกอย่างว่าตัวหารร่วมมากหรือ 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 เป็นตัวเลขเดียวที่หารทั้งสองได้ (ในแง่อื่นๆ ตัวเลขเป็นแบบ co-prime) ดังนั้นเราจึงส่งคืนผลิตภัณฑ์ของพวกมันได้ง่ายๆ
ผลลัพธ์
ผลลัพธ์ในคอนโซลจะเป็น -
24 144 0 308 306