假设我们有两个数字A和B。现在在每个运算中,我们可以选择任意一个数字并将其递增1或递减1。我们必须找到所需的最小操作数,以使最大公约数最大在A和B之间不是1。
因此,如果输入像A = 8,B = 9,那么输出将是1,因为我们可以选择9然后将其增加到10,所以8和10不是互质的。
为了解决这个问题,我们将按照以下步骤操作:
如果a和b的gcd不等于1,则
返回0
如果a是偶数或b是偶数,则
返回1
除此以外,
返回2
返回1
如果a + 1和b的gcd不等于1或a-1和b的gcd不等于1或a和b-1的gcd不等于1或a和b + 1的gcd不相同为1
除此以外,
让我们看一下下面的实现以获得更好的理解
from math import gcd class Solution: def solve(self, a, b): if gcd(a, b) != 1: return 0 if a % 2 == 0 or b % 2 == 0: return 1 else: if (gcd(a + 1, b) != 1 or gcd(a - 1, b) != 1 or gcd(a, b - 1) != 1 or gcd(a, b + 1) != 1): return 1 else: return 2 ob = Solution()A = 8 B = 9 print(ob.solve(A, B))
8,9
输出结果
1