Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chương trình tìm số giá trị là ước của hai tập hợp số


Giả sử chúng ta có hai mảng gọi là nums1 và nums2. Chúng ta phải tìm số lượng giá trị thỏa mãn các điều kiện sau:

  • Các phần tử trong nums1 là ước của các phần tử được chọn

  • Các phần tử được chọn là ước của tất cả các phần tử của nums2

Vì vậy, nếu đầu vào là nums1 = [3,9] nums2 = [27, 81], thì đầu ra sẽ là 2 vì các số là 9 và 27, vì:

  • 9 mod 3 = 0

  • 9 mod 9 = 0

  • 27 mod 9 = 0

  • 81 mod 9 = 0

  • 27 mod 3 = 0

  • 27 mod 9 = 0

  • 27 mod 27 = 0

  • 81 mod 27 = 0.

Để giải quyết vấn đề này, chúng ta sẽ làm theo các bước sau:

  • count := 0
  • với i từ 1 đến 100, thực hiện
    • flag := True
    • với mỗi j trong nums1, thực hiện
      • nếu i mod j khác 0, thì flag := False, thoát vòng lặp
    • nếu flag đúng, thì với mỗi k trong nums2, thực hiện
      • nếu k mod i khác 0, thì flag := False, thoát vòng lặp
    • nếu flag đúng, thì count := count + 1
  • trả về count

Ví dụ

Hãy xem triển khai sau để hiểu rõ hơn:

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))

Đầu vào

[3,9], [27, 81]

Đầu ra

1