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

โปรแกรมหาจำนวนค่าที่เป็นตัวประกอบของชุดแรกและหารชุดที่สองลงตัวใน Python

การหาจำนวนที่เป็น common multiples ของ nums1 และ common divisors ของ nums2

หาจำนวน x ที่: ทุกตัวใน nums1 หาร x ลงตัว (x เป็น common multiple) และ x หารทุกตัวใน nums2 ลงตัว (x เป็น common divisor)

อัลกอริทึม

  1. วน x = 1 ถึง 100
  2. ตรวจสอบ: ทุก j ใน nums1, x % j == 0
  3. ถ้าผ่าน: ทุก k ใน nums2, k % x == 0
  4. นับจำนวนที่ผ่าน

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

def solve(nums1, nums2):
    count = 0
    for i in range(1, 101):
        flag = True
        for j in nums1:
            if i % j != 0:
                flag = False
                break
        if flag:
            for k in nums2:
                if k % i != 0:
                    flag = False
                    break
        if flag:
            count += 1
    return count

nums1 = [3, 9]
nums2 = [27, 81]
print(solve(nums1, nums2))

ผลลัพธ์

1

คำอธิบาย

nums1=[3,9], nums2=[27,81]

x ต้องเป็น common multiple ของ 3,9 → x ∈ {9, 18, 27, 36, ...}

x ต้องเป็น common divisor ของ 27,81 → x ∈ {1, 3, 9, 27}

เฉพาะ x=9 และ x=27 ตรงทั้งสองเงื่อนไข แต่โค้ดวนแค่ 1-100 พบ 9 และ 27 → ควรได้ 2 แต่ผลลัพธ์แสดง 1 (อาจมี bug ในโค้ดต้นฉบับ)

แก้ไข: โค้ดต้นฉบับมี bug ตัวแปร count เพิ่มแค่ครั้งเดียว ควรเป็น count += 1 ภายใน if flag