การหาจำนวนที่เป็น common multiples ของ nums1 และ common divisors ของ nums2
หาจำนวน x ที่: ทุกตัวใน nums1 หาร x ลงตัว (x เป็น common multiple) และ x หารทุกตัวใน nums2 ลงตัว (x เป็น common divisor)
อัลกอริทึม
- วน x = 1 ถึง 100
- ตรวจสอบ: ทุก j ใน nums1, x % j == 0
- ถ้าผ่าน: ทุก k ใน nums2, k % x == 0
- นับจำนวนที่ผ่าน
ตัวอย่างโค้ด
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