在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