找到给定范围内的最大公约数
问题表明我们需要找到给定范围内的 GCD。我们将得到两个正整数 x 和 y 以及两个整数 p 和 q,其范围为 [p,q]。我们需要找出落在 [p,q] 范围内的数字 x 和 y 的 GCD(最大公约数)。 GCD,在数学中被称为最大公约数,是两个给定正整数相除的最大正整数。给定的整数不得为零。对于任意两个正整数 x 和 y,它表示为 gcd(x,y)。
例如,我们有两个正整数 6 和 9。最大公约数 gcd(6,9) 将为 3,因为它是除以这两个数字的最大数。
但是在这个问题中,我们需要找到两个给定的在指定范围内的正整数的最大公约数。让我们通过例子来理解这个问题。我们将得到 4 个数字作为输入 x 和 y 来查找这些数字的 gcd 和两个指示 gcd 范围的数字,即 [p,q]。
输入:x=8、y=12、p=1、q=3
输出:2
解释 - 由于给定的两个数字 x 和 y 的最大公约数是 4。但是 4 不在范围 [1,3] 之内。 [1,3] 范围内的最大公约数是 2,这是我们所需的输出。
输入:x=17、y=15、a=5、b=10
输出:-1
解释 - 数字 17 和 15 的最大公约数是 1。因为 1 不在给定范围 [5,10] 内。当给定范围内没有公约数时,我们需要打印 -1 作为输出。
算法
我们用来解决问题的算法非常简单并且与数学相关。首先,我们将找到数字 x 和 y 的 gcd(最大公约数)。在 C++ 中,有一个名为 gcd() 的内置函数,它返回数字的最大公约数作为输出。
语法
int divisor=gcd(x,y); 登录后复制