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

โปรแกรมนับจำนวนตัวหารร่วมของสองจำนวนใน Python

การนับตัวหารร่วม (Common Divisors) ของสองจำนวน

หาจำนวนจำนวนเต็มบวกที่หาร a และ b ลงตัวทั้งคู่

อัลกอริทึม

  1. หา GCD ของ a และ b
  2. นับตัวหารของ GCD (เพราะตัวหารร่วมของ a,b คือตัวหารของ gcd(a,b))

ตัวอย่างโค้ด

from math import gcd

def solve(a, b):
    res = 0
    for i in range(1, gcd(a, b) + 1):
        if (a % i) == 0 and (b % i) == 0:
            res += 1
    return res

a, b = 288, 240
print(solve(a, b))

ผลลัพธ์

10

ตัวหารร่วม

[1, 2, 3, 4, 6, 8, 12, 16, 24, 48] → 10 ตัว

การปรับปรุงประสิทธิภาพ

def solve_fast(a, b):
    g = gcd(a, b)
    count = 0
    for i in range(1, int(g**0.5) + 1):
        if g % i == 0:
            count += 2 if i != g // i else 1
    return count