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

วิธีตรวจสอบว่า Array ทำให้ค่าเท่ากันได้ด้วยการคูณจำนวนเฉพาะที่กำหนดใน Python

ปัญหา

กำหนด Array nums และ primes ตรวจสอบว่าสามารถคูณสมาชิกใน nums ด้วยจำนวนเฉพาะจาก primes ให้ทุกค่าเท่ากันได้หรือไม่

ตัวอย่าง: nums=[25,100], primes=[2,5] → 25×2×2=100 → True

แนวทางแก้ปัญหา

  1. หา LCM (Least Common Multiple) ของทุกค่าใน nums
  2. สำหรับแต่ละค่า คำนวณ val = LCM / nums[i]
  3. หาร val ด้วยจำนวนเฉพาะใน primes จนไม่ลงตัว
  4. หาก val != 1 หมายถึงมีเฉพาะตัวที่ไม่อยู่ใน primes → False

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

from math import gcd

def array_lcm(nums):
    ans = nums[0]
    for i in range(1, len(nums)):
        ans = (nums[i] * ans) // gcd(nums[i], ans)
    return ans

def solve(nums, primes):
    lcm_arr = array_lcm(nums)
    for i in range(len(nums)):
        val = lcm_arr // nums[i]
        for p in primes:
            while val % p == 0:
                val //= p
        if val != 1:
            return False
    return True

nums = [25, 100]
primes = [2, 5]
print(solve(nums, primes))  # True

อินพุต / เอาต์พุต

Input: [25, 100], [2, 5]
Output: True