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.