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
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP