查詢三個小於或等於 N 的整數,使得它們的最小公倍數最大 - C++


在本教程中,我們將編寫一個基於最小公倍數概念的程式。正如標題所說,我們必須找到三個小於或等於給定數字的數字,其最小公倍數最大。

讓我們看一個例子。

在深入探討問題之前,讓我們看看什麼是最小公倍數併為其編寫程式。

最小公倍數 (LCM) 是一個數字的最小公倍數。它也稱為最小公約數。對於兩個正數 a 和 b,最小公倍數是這兩個數都能整除的最小整數。

如果給定的整數沒有公因子,則最小公倍數 (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

我們已經瞭解了什麼是最小公倍數以及如何編寫程式來查詢兩個正數的最小公倍數。

讓我們看看解決問題的步驟。

  • 如果數字是奇數,則最大最小公倍數的三個數字為n、n - 1n - 3

  • 如果數字是偶數且nn - 3的最大公約數為1,則最大最小公倍數的三個數字為n、n - 1n - 3

  • 否則,最大最小公倍數的三個數字為n - 1、n - 2n - 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

結論

如果您在本教程中有任何疑問,請在評論部分中提出。

更新於: 2020-12-29

364 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始
廣告