ในบทช่วยสอนนี้ เราจะเขียนโปรแกรมที่อิงตามแนวคิดของ LCM ดังที่ชื่อเรื่องกล่าวไว้ เราต้องหาตัวเลขสามตัวที่น้อยกว่าหรือเท่ากับจำนวนที่ระบุซึ่งมี LCM สูงสุด
มาดูตัวอย่างกัน
ก่อนเจาะลึกปัญหา เรามาดูกันว่า LCM คืออะไร แล้วเขียนโปรแกรมเพื่อแก้ปัญหาอะไร
LCM เป็นตัวคูณร่วมน้อยของจำนวนหนึ่ง เป็นที่รู้จักกันว่าตัวหารร่วมน้อย สำหรับจำนวนบวกสองตัว a และ b LCM เป็นจำนวนเต็มที่น้อยที่สุดที่หารด้วย a และ b ลงตัว
หากจำนวนเต็มที่กำหนดไม่มีตัวประกอบร่วม ดังนั้น LCM เป็นผลคูณของตัวเลขที่กำหนด
ตัวอย่าง
มาเขียนโปรแกรมหาค่า LCM ของจำนวนบวกสองตัวที่กำหนดให้กัน
#include <iostream> using namespace std; int main() { int a = 4, b = 5; int maximum = max(a, b); while (true) { if (maximum % a == 0 && maximum % b == 0) { cout << "LCM: " << maximum << endl; break; } maximum++; } }
ผลลัพธ์
หากคุณเรียกใช้โปรแกรมข้างต้น คุณจะได้ผลลัพธ์ดังต่อไปนี้
20
เราได้เห็นแล้วว่า LCM คืออะไรและตั้งโปรแกรมหา LCM ของจำนวนบวกสองตัว
มาดูขั้นตอนการแก้ปัญหากัน
-
หากตัวเลขเป็นเลขคี่ ตัวเลขสามตัวที่มี LCM สูงสุดคือ n, n - 1, และ n - 3 .
-
ถ้าตัวเลขเป็นคู่และ GCM ของ n และ n - 3 คือ 1 ดังนั้นตัวเลขสามตัวที่มี LCM สูงสุดคือ n, n - 1 , และ n - 3 .
-
มิฉะนั้น ตัวเลขสามตัวที่มี LCM สูงสุดคือ n - 1, n - 2 , และ n - 3 .
ตัวอย่าง
มาดูโค้ดกันเลย
#include <bits/stdc++.h> using namespace std; void threeNumbersWithMaxLCM(int n) { if (n % 2 != 0) { cout << n << " " << (n - 1) << " " << (n - 2); } else if (__gcd(n, (n - 3)) == 1) { cout << n << " " << (n - 1) << " " << (n - 3); } else { cout << (n - 1) << " " << (n - 2) << " " << (n - 3); } cout << endl; } int main() { int n = 18; threeNumbersWithMaxLCM(n); return 0; }
ผลลัพธ์
หากคุณรันโปรแกรมข้างต้น คุณจะได้ผลลัพธ์ดังต่อไปนี้
17 16 15
บทสรุป
หากคุณมีข้อสงสัยใดๆ ในบทแนะนำ โปรดระบุในส่วนความคิดเห็น