用 Python 编写一个程序来计算使数字不互质所需的最少操作次数?
pythonserver side programmingprogramming更新于 2026/2/16 13:00:17
假设我们有两个数字 A 和 B。现在在每次操作中,我们可以选择任意一个数字并将其增加 1 或减少 1。我们必须找到所需的最少操作次数,以使 A 和 B 之间的最大公约数不为 1。
因此,如果输入为 A = 8,B = 9,则输出将为 1,因为我们可以选择 9 然后将其增加到 10,因此 8 和 10 不互质。
要解决这个问题,我们将遵循以下步骤:
如果 a 和 b 的 gcd 不等于 1,则
返回 0
如果 a为偶数或 b 为偶数,则
返回 1
否则,
如果 a + 1 和 b 的 gcd 不等于 1 或 a - 1 和 b 的 gcd 不等于 1 或 a 和 b - 1 的 gcd 不等于 1 或 a 和 b + 1 的 gcd 不等于 1,则
返回 1
否则,
返回 2
让我们看看下面的实现以便更好地理解
示例
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
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

