Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm ba số nguyên nhỏ hơn hoặc bằng N sao cho LCM của chúng là lớn nhất - C ++

Trong hướng dẫn này, chúng ta sẽ viết một chương trình dựa trên các khái niệm về LCM. Như tiêu đề cho biết, chúng ta phải tìm ba số nhỏ hơn hoặc bằng số đã cho có LCM là lớn nhất.

Hãy xem một ví dụ.

Trước khi đi sâu vào vấn đề, hãy xem LCM là gì và viết chương trình cho nó.

LCM là bội số chung nhỏ nhất của một số. Nó còn được gọi là ước số chung nhỏ nhất. Đối với hai số dương a và b, LCM là số nguyên nhỏ nhất chia hết cho cả a và b.

Nếu các số nguyên đã cho không có nhân tử chung thì LCM là tích của các số đã cho.

Ví dụ

Hãy viết chương trình để tìm LCM của hai số dương bất kỳ đã cho.

#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++;
   }
}

Đầu ra

Nếu bạn chạy chương trình trên, bạn sẽ nhận được kết quả sau.

20

Chúng tôi đã biết LCM là gì và chương trình để tìm LCM của hai số dương.

Hãy xem các bước để giải quyết vấn đề.

  • Nếu số lẻ thì ba số có LCM tối đa là n, n - 1, n - 3 .

  • Nếu số chẵn và GCM của n n - 3 1 thì ba số có LCM tối đa là n, n - 1 n - 3 .

  • Ba số khác có LCM tối đa là n - 1, n - 2 n - 3 .

Ví dụ

Hãy xem mã.

#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;
}

Đầu ra

Nếu bạn thực hiện chương trình trên, bạn sẽ nhận được kết quả sau.

17 16 15

Kết luận

Nếu bạn có bất kỳ câu hỏi nào trong hướng dẫn, hãy đề cập đến chúng trong phần bình luận.