Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

นับออปปอเรชันน้อยที่สุดทำให้สองจำนวนไม่ Coprime ใน Python

มีจำนวน A, B ออปปอเรชัน: เลือก A หรือ B แล้ว +1 หรือ -1 หาออปปอเรชันน้อยที่สุดให้ GCD(A,B) ≠ 1

ตัวอย่าง: A=8, B=9 → 1 (9→10, GCD(8,10)=2)

สังเกต

  • ถ้า GCD ≠ 1 อยู่แล้ว → 0
  • ถ้าหนึ่งในสองเป็นเลขคู่ → 1 (เลขคู่มีตัวหาร 2)
  • ทั้งคู่คี่: ลอง +1/-1 แต่ละตัว ดูว่า GCD ≠ 1 ได้ไหม → 1
  • มิฉะนั้น → 2 (เสมอทำได้ภายใน 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, B = 8, 9
print(ob.solve(A, B))  # 1

อินพุต

8, 9

เอาต์พุต

1