C++中求能整除一個數且被另一個數整除的最小值


問題陳述

給定兩個整數p和q,任務是找到最小的整數x,使得q % x = 0且x % p = 0。如果沒有任何數滿足條件,則輸出-1。

示例

If p = 3 and q = 66 then answer is 3 as:
66 % 3 = 0
3 % 3 = 0

演算法

  • 如果一個數x滿足給定條件,則很明顯q可以被p整除,即q % p = 0,因為x是p的倍數,而q是x的倍數。
  • 因此,x的最小可能值為p和q的最大公約數(GCD)。當q不能被p整除時,則沒有任何數滿足給定條件。

示例

 線上演示

#include <bits/stdc++.h>
using namespace std;
int getMinValue(int p, int q) {
   if (q % p == 0) {
      return __gcd(p, q);
   }
   return -1;
}
int main() {
   int p = 3;
   int q = 66;
   cout << "Minimum value = " << getMinValue(p, q) << endl;
   return 0;
}

編譯並執行上述程式後,將生成以下輸出:

輸出

Minimum value = 3

更新於:2019年12月20日

瀏覽量:130

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.