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