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

ค้นหาจำนวนเต็มที่น้อยกว่าหรือเท่ากับ N สามตัว โดยที่ LCM มีค่าสูงสุด - C++


ในบทช่วยสอนนี้ เราจะเขียนโปรแกรมที่อิงตามแนวคิดของ 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

บทสรุป

หากคุณมีข้อสงสัยใดๆ ในบทแนะนำ โปรดระบุในส่วนความคิดเห็น