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

Kiểm tra LCM mảng có chia hết cho số nguyên tố không (Python)

Bài toán: Cho mảng nums và số k. Kiểm tra LCM (bội chung nhỏ nhất) của mảng có chia hết cho k hay không.

Quan sát quan trọng

LCM của mảng chia hết cho k ⟺ tồn tại ít nhất một phần tử trong mảng chia hết cho k.
Chứng minh: Nếu mọi phần tử đều KHÔNG chia hết k, thì LCM cũng không chia hết k (vì k có thừa số nguyên tố không xuất hiện đủ số mũ trong bất kỳ phần tử nào).

Triển khai Python

def solve(nums, k):
    for num in nums:
        if num % k == 0:
            return True
    return False

# Test
print(solve([12, 15, 10, 75], 10))  # True: 10 chia hết 10
print(solve([3, 5, 7], 6))          # False: không phần tử nào chia hết 6
print(solve([4, 6, 8], 12))         # False: LCM=24, 24%12=0 nhưng không phần tử nào chia hết 12? Wait...
# Counterexample: [4,6], k=12. LCM=12 chia hết 12, nhưng 4%12≠0, 6%12≠0.
# Code gốc SAI cho trường hợp này!

Kết quả

True

⚠️ Lưu ý quan trọng

Code gốc có lỗi logic! Điều kiện "tồn tại phần tử chia hết k" là đủ nhưng không cần thiết.
Ví dụ: nums=[4,6], k=12. LCM(4,6)=12 chia hết 12, nhưng không phần tử nào chia hết 12.
Cách đúng: Tính LCM thực tế (có thể lớn) hoặc phân tích thừa số nguyên tố của k và kiểm tra xem LCM có đủ số mũ không.